[英]C++ | Derived class is accessing private members of the base class rather than its own private members
[英]Does C++ require you to initialize base class members from its derived class?
class Base {
public:
int a;
Base():a(0) {}
virtual ~Base();
}
class Derived : public Base {
public:
int b;
Derived():b(0) {
Base* pBase = static_cast<Base*>(this);
pBase->Base();
}
~Derived();
}
是對基類構造函數的調用是必需的,還是c ++會自動執行此操作? 例如C ++是否要求您從任何派生類初始化基類成員?
在派生類的構造函數被調用之前,基類的構造函數將被自動調用。
您可以使用初始化列表顯式指定要調用的基本構造函數(如果有多個):
class Base {
public:
int a;
Base():a(0) {}
Base(int a):a(a) {}
};
class Derived {
public:
int b;
Derived():Base(),b(0) {}
Derived(int a):Base(a),b(0) {}
};
基類構造函數會自動調用(並在派生類構造函數之前)。 因此,您不必也不必嘗試手動調用基本構造函數。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.