【发布时间】:2013-12-14 18:50:48
【问题描述】:
我正在阅读 C++ 中的基本/成员初始化,但我真的不明白发生了什么。考虑以下示例 Date 类:
// CLASS DECLARATION
class Date
{
private:
int month;
int day;
int year;
public:
Date(int = 7, int = 4, int = 2012); // CONSTRUCTOR
Date(const Date&); // COPY CONSTRUCTOR
void showDate(); // MEMBER FUNCTION TO DISPLAY DATE
};
可以通过Date a; 创建一个Date 对象,它将a 的成员变量分配给2012 年7 月4 日。现在进行基本成员初始化有什么区别,如下所示:
// class declaration section
public:
Date(int mo=7, int da=4, int yr=2012):month(mo), day(da), year(yr) {}
相当于:
// class declaration section
public:
Date(int = 7, int = 4, int = 2012); // prototype with defaults
// class implementation section
Date::Date(int mo, int da, int yr) : month(mo), day(da), year(yr) {}
有人能解释一下这两种情况的区别吗?有什么区别,你为什么要做第二种情况?它只是在构造函数中初始化默认值的另一种方法还是还有更多?谢谢。
【问题讨论】:
标签: c++ class object initialization member