我在閱讀有關C++中的基本/成員初始化的知識,但我並不瞭解真正發生了什麼。考慮下面的例子Date
類:基礎成員初始化vs在類聲明中分配默認值
// 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
對象:Date a;
這將分配的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) {}
能有人請解釋這兩種情況之間的差異?有什麼區別,你爲什麼要做第二種情況?它只是在構造函數中初始化默認值的另一種方式,還是有更多的方法呢?謝謝。