これは私のコードで、あなたはまた、子供のコンストラクタを呼び出す必要があるので、私はX(){}
ラインを持っている必要がありhttp://cpp.sh/5lsds親クラスのコンストラクタは、プライベート変数に値を代入しません
#include "iostream"
using namespace std;
class X{
private:
int c;
public:
X(){}
X(int b){
c = 11;
}
int getC();
};
class Z:public X{
public:
Z(int n){
X(23);
}
};
int main()
{
Z z(1);
cout<<z.getC()<<endl;
return 0;
}
int X::getC(){
return c;
}
からそれを実行することができます親のデフォルトコンストラクタ
http://cpp.sh/5lsdsからプログラムを実行すると、11
と予想されますが、出力が0
であることがわかります。 Z
コンストラクタはX
コンストラクタをint
パラメータで呼び出し、c
の値を11
に設定しますが、出力は0
に設定されています。
'X(23);'は一時的なXを作成し、すぐに破棄することを意味します。これは '* this'のXサブ部分とは関係ありません –
JavaのバックグラウンドからC++に来たのならば、それをすべて忘れてしまいます。 –