gì là sai với mã này, tại sao tôi nhận được câu trả lời sai:C++ constructor: rác trong khi khởi tạo các tham chiếu 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;
}
Đoạn mã trên sẽ cho tôi kết quả như
display():a:10
display():b:1104441332
Nhưng Nếu tôi xóa 2 dòng nhận xét bên trong hàm tạo mặc định, nó sẽ cho tôi kết quả phù hợp là
constructor : a 10
constructor : b 20
display():a:10
display():b:20
vui lòng trợ giúp, Cảm ơn bạn
cảm ơn câu trả lời của bạn. giải thích kết quả. nhưng tôi có thể biết cách khởi tạo b? –
@VivekBasappa: có tham chiếu đến một số biến, như bạn dự định. Hoặc, chỉ làm cho nó có giá trị như 'a'. –
@VivekBasappa Đó là một 'int', vì vậy bạn có thể không muốn nó là một tài liệu tham khảo dù sao đi nữa. 'snot như sao chép một 'int' là tốn kém. – Borealid