class a {
a(int b);
}
main(){
int b=5;
a tempa=b;
}
これはどのように機能しますか?オブジェクト初期化時に代入演算子によってコンストラクタにパラメータが渡される理由は?
HWでこの問題が発生しましたか?
誰かが助けることができますか?ありがとう。
class a {
a(int b);
}
main(){
int b=5;
a tempa=b;
}
これはどのように機能しますか?オブジェクト初期化時に代入演算子によってコンストラクタにパラメータが渡される理由は?
HWでこの問題が発生しましたか?
誰かが助けることができますか?ありがとう。
あなたの質問に示すようなコンストラクタが変換コンストラクタと呼ばれることがあります。
これは、コンパイラが引数型の値を取得し、それをクラスのインスタンスに変換することを許可します。あなたの例で
、ライン
a = b;
は
a = a(5);
(まあ、クラス及びa
という名前の変数の両方を有するの衝突を除く)
これを許可しない場合は、コンストラクタをに明示する必要があります。
class A
{
public:
explicit A(int);
};
コンパイラは、コンバージョンのコンストラクタを上記のように使用することはできません。あなたは明示的にコンストラクタを使用する必要があります。
ありがとう、プログラマーの方が多いです。 – ricecakebear
コンパイルして実行した実際のコードを投稿してください。 – molbdnilo
Woah ... '(){}のフォント。 ? 'はコードの残りの部分と一致しません。どうしたの? (それはあなたがすべきではありません、ちょうど奇妙に見えます) – Borgleader
@Borgleaderこれらは全角文字です。とにかくモノスペースフォントではあまり役に立ちません:) – Quentin