このコードを実行すると
#include<iostream>
using namespace std;
class Final;
class MakeFinal{
public:
friend class Final;
MakeFinal(){cout<<"makefinal\n";}
};
class Final: public virtual MakeFinal{
public:
Final(){cout<<"Final\n";}
};
class Derived:public Final{
public:
Derived(){cout<<"Derived\n";}
};
int main(){
//Final f;
Derived d;
return 0;
}
出力は次のとおりです。
makefinal Final 派生
しかし、MakeFinal() コンストラクターを private にすると、コンパイラーにエラー メッセージが表示されます。この異なるコンストラクター呼び出し階層は何に基づいていますか?