デフォルトのコンストラクタ引数でコンストラクタを呼び出すと、オブジェクトが構築されません。コピーとベースコンストラクタで初期化されないC++
class cl{
private:
public:
cl(){cout << "Default used" << endl;};
cl(const cl & cl_object) {cout << "Copy used" << endl;};
cl & operator=(const cl & cl_object){cout << "Assignment used" << endl; return *this;};
};
私が書く:
cl(cl());
メッセージは表示されませんされます。
質問: 1)なぜオブジェクトが構築されないのですか? 2)コピーコンストラクタが使用されないのはなぜですか?
@ NathanOliverこれが重複していることを説明できますか? – Nameless
答えと同様、 'cl(cl());'は関数を宣言します。それは関数であり、変数ではないので、何も構築しないので、コンストラクタ呼び出しを見ないことになります。 – NathanOliver
@ NathanOliverしたがって、cl()を使用して正しく理解している場合は、 cl(cl())を使ってオブジェクトを構築するだけです。関数を宣言します。しかし、関数を宣言すると、戻り値の型を指定していないので、コンパイラはエラーを出力してはいけませんか? – Nameless