[英]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.