ながら、なぜ私が間違った答えを取得します:C++のコンストラクタ:ごみconst参照の初期化このコードで何が間違っている
class X
{
private:
const int a;
const int& b;
public:
X(): a(10) , b(20)
{
// std::cout << "constructor : a " << a << std::endl;
// std::cout << "constructor : b " << b << std::endl;
}
void display()
{
std::cout << "display():a:" << a << std::endl;
std::cout << "display():b:" << b << std::endl;
}
};
int
main(void)
{
X x;
x.display();
return 0;
}
を上記のコードは
display():a:10
display():b:1104441332
として私に結果が得られます。しかし私は、デフォルトのコンストラクタ内のコメント行を削除する場合、それは私に適切な結果を与える
constructor : a 10
constructor : b 20
display():a:10
display():b:20
お手数ですが、
あなたの答えに感謝します。その結果を説明します。しかし、私はbを初期化する方法を知っているかもしれませんか? –
@VivekBasappa:あなたが意図したように、変数を参照してください。あるいは、単に 'a'のような値にしてください。 –
@VivekBasappaそれは 'int'なので、おそらくそれが何とか参照になりたくないでしょう。 'int'をコピーすることは費用がかかります。 – Borealid