#include <iostream>
using namespace std;
class date{
public:
int month;
int day;
int year;
private:
date(int x, int y, int z);
public:
date(int x, int y);
};
date::date(int x, int y, int z): month{x}, day{y}, year{z} {
cout << "Hello you called me PRIVATE constructor" << endl;
}
date::date(int x, int y){
cout << "Hello you called me PUBLIC constructor" << endl;
date(x, y, 100);
}
int main(){
date x{11, 21};
cout << x.month << endl;
cout << x.day << endl;
cout << x.year << endl;
}
を使用しながら、私は2つのコンストラクタを持ち、メインで私は2つの引数を持つオブジェクトxを作成します。C++ガベージメンバー値は、コード上で見ることができるようにパブリックとプライベートのオーバーロードされたコンストラクタ
これは、パブリックコンストラクタを呼び出して、プライベートコンストラクタを呼び出して、パブリックメンバーの月日と年を初期化する必要があります。
しかし、私がメンバーの価値を出すとき、私は望みの結果を得られません。出力に対し
Hello you called me PUBLIC constructor
Hello you called me PRIVATE constructor
392622664
1
0
は次のようになります。
Hello you called me PUBLIC constructor
Hello you called me PRIVATE constructor
11
21
100
私が何か間違ったことをしたところ、私は知りません。どんな助けもありがとう。ありがとうございました。
'date(x、y、100);'あなたの考えをしません。ステートメントの終わりに破棄される新しい一時的な 'date'を作成します。文字列に加えて 'this'を' cout'で印刷した場合、気づいたでしょう。 –