[英]defining a class constructor
我正在處理我關於C ++編程的第一門課程,這就是告訴我定義類構造函數的方式:
class_name(int x, int y){
this->x=x;
this->y=y;
};
如果我理解正確,正如我在這里多次發現的那樣,我可以這樣重寫它:
field(int x, int y) : m_x(x), m_y(y){};
但是具有以下受保護的變量:
protected:
int m_x, m_y;
代替
protected:
int x, y;
它們之間是否有區別,或者只是不同的寫作方式?
並且,如果是這樣,為什么需要具有不同的m_x和x變量?
我希望這不是一個愚蠢的問題,但我想真正理解它。
和平。
第一種初始化x和y的類型是在構造函數主體內,第二種是您使用的成員initializer-list。
它們是相同的,但是在使用繼承時必須在其中使用成員列表初始化程序,因此您不能在派生類的構造函數定義的主體內調用基本構造函數。 例如:
class A
{
public:
A(int x) : _x(x){} // ok
// A(int x) {_x = x;} ok
protected:
int _x;
};
class B : public A
{
public:
// B(int x) {A(x);} error here
B(int x) : A(x){} // we must use member initializer list here
};
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.