快速問題:我認爲成員初始化列表的行爲與使用'='的常規初始化相同(除了只能使用初始化列表定義的const成員),調用構造函數即將傳入的具有特定參數的待初始化對象,如我在下面的示例中(我將調用x的構造函數的值爲1)。但是就我個人而言,在簡單繼承的情況下,編譯器抱怨沒有看到我想用我的構造函數初始化的成員,儘管看到另一個用慣常的'='語法初始化:初始化程序列表未檢測到公開繼承的成員
#include <iostream>
using namespace std;
class A
{
public:
int x;
int y;
};
class B : public A
{
public:
B() : x(1)
{
y = 2;
}
};
int main()
{
return 0;
}
如果你運行上面的代碼,你會發現雖然y被檢測到沒有問題,但你的編譯器會說在'B():x(1)'行沒有這樣一個名爲'x'的成員。這是爲什麼?繼承是公開的,你會看到,沒有問題,爲什麼不是x?
可能的重複[我如何初始化派生類構造函數中的基類成員變量?](http://stackoverflow.com/questions/7405740/how-可以在我初始化基類成員變量在派生類構造函數) –