我一直在擺弄一個程序大約20分鐘,我發現由於某種原因它不會讓我在初始化列表中使用繼承變量。這個程序,例如:使用初始化器列表和繼承變量
class A {
protected:
int i;
};
class B : public A {
public:
B() : i(45) { }
};
int main() {
B b;
}
會給出錯誤
error: class ‘B’ does not have any field named ‘i’
但是,如果你改變了構造這樣:
B() { i = 45; }
它編譯。
我從來不知道你不能初始化繼承變量。我的問題是,爲什麼?
好吧,*嚴格來說*,全局變量可以初始化兩次。首先是零初始化,然後是初始化它。仍然,這個案件正確。 :) – Xeo 2011-06-10 23:06:41
啊,這是非常有道理的。謝謝。 – 2011-06-10 23:07:21