#include<iostream>
using namespace std;
int main(){
class c1{
public:
c1(){
cout<<"constructing c1";
}
};
class c2:private c1{
public:
c2(){
cout<<"constructing c2";
}
};
c2 inst1;
}
q1。アクセスがプライベートであっても、ベースオブジェクトの派生オブジェクトが呼び出されるのはなぜですか? つまり、c1
がプライベートとして継承されている場合でもc1()
が呼び出されるのはなぜですか?なぜベースコンストラクタが継承されているのですか?どうすればそれを防ぐことができますか?
q2。ここではc1が継承されていますが、どうしたら起こるのを防ぐことができますか?
コンストラクターが継承していません。コンストラクタと継承についてお読みください。 – aghilpro
@aghilpro - C++ 11では、コンストラクタの継承のオプションが追加されました。ここで起こっていることではありませんが、これらの用語は互いに素ではありません。 – StoryTeller
@StoryTeller私はそれについて読んでいます。 http://www.cplusplus.com/forum/general/17261/フィードバックに感謝します。 – aghilpro