繁体   English   中英

多个时如何设置默认构造函数

[英]How to set a default constructor when there's more than one

我正在学习C ++中的构造函数,并且了解可以声明多个构造函数。 您可以在下面看到我下面有2个Date构造函数,但是我想将Date(long)设置为默认值。 有人可以解释一下我该怎么做吗?

好的,显然以上问题很有意义。 我正在处理这本书中的一个问题,它的意思是:

修改程序10.3,以便该类的唯一数据成员是一个名为yyyymmdd的长整数。 为此,可以用声明long yyyymmdd代替; 对于这些现有的声明:

int月 诠释日 年份

使用当前在类声明部分中声明的相同构造函数原型,对其进行重写,以使Date(long)方法成为默认构造函数,并且Date(int,int,int)方法将一个月,日和年转换为正确的类数据成员的表单。

程序10.3:

#include <iostream>
#include <iomanip>
using namespace std;

class Date
{
    private:
        int month, day, year;
    public:
        Date(int=7, int=4, int=2012);
        Date(long);
        void showDate();
};

Date::Date(int mm, int dd, int yyyy)
{
   month = mm;
   day = dd;
   year = yyyy;
}

Date::Date(long yyyymmdd)
{
    year = int(yyyymmdd/10000);
    month = int( (yyyymmdd - year*10000)/100);
    day = int(yyyymmdd - year*10000 - month*100);
}

void Date::showDate()
{
    cout << "The date is "
         << setfill('0')
         << setw(2) << month << '/'
         << setw(2) << day << '/'
         << setw(2) << year % 100;
    cout << endl;
}

int main()
{
    Date a;
    Date b(4,1,1998);
    Date c = Date(20090515L);

    a.showDate();
    b.showDate();
    c.showDate();
    return 0;
}

您拥有的month / day / year构造函数的默认值使其成为默认构造函数(您可以不带任何参数调用它。您想要做的是取消默认设置,并将参数默认为long构造函数:

    Date(int, int, int);
    Date(long = 20120704);

您不能设置默认构造函数。 根据定义,默认构造函数是无需参数即可调用的构造函数。

如果您在创建对象时未(或无法)指定参数,则会自动使用它。

例如,如果定义一个对象数组,则所有这些对象都将使用默认构造函数构造

Date dates[5]; // Will create 5 Dates using Date::Date(7, 4, 2012)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM