我正在学习C ++中的构造函数,我知道你可以声明多个构造函数。您可以在下面看到我下面有2个Date
构造函数,但我想将Date(long)
设置为默认构造函数。有人可以解释我会怎么做?
好的,显然上面的问题很有道理。我正在从书中解决问题,这就是它所说的:
修改程序10.3,以便该类的唯一数据成员是名为yyyymmdd的长整数。通过替换声明long yyyymmdd来做到这一点;对于这些现有的声明:
int月; int day; int year;
使用当前在类声明部分中声明的相同构造函数原型,重写它们以使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;
}
答案 0 :(得分:3)
您拥有的月/日/年构造函数的默认值使其成为默认构造函数(您可以在没有参数的情况下调用它。您要做的是取消默认值,并将参数默认为{{1}构造函数:
long
答案 1 :(得分:1)
您无法设置默认构造函数。根据定义,默认构造函数是可以不带参数调用的构造函数。
如果在创建对象时没有(或不能)指定参数,则会自动使用它。
例如,如果您定义了一个对象数组,那么所有这些对象都将使用默认构造函数构建:
Date dates[5]; // Will create 5 Dates using Date::Date(7, 4, 2012)