Mã của tôi:Constructor không đặt biến thành viên
#include <iostream>
using namespace std;
class Foo
{
public:
int bar;
Foo()
{
bar = 1;
cout << "Foo() called" << endl;
}
Foo(int b)
{
bar = 0;
Foo();
bar += b;
cout << "Foo(int) called" << endl;
}
};
int main()
{
Foo foo(5);
cout << "foo.bar is " << foo.bar << endl;
}
Sản lượng:
Foo() called
Foo(int) called
foo.bar is 5
Tại sao không phải là giá trị foo.bar
6? Foo()
được gọi nhưng không được đặt bar
thành 1. Tại sao?
'Foo(); 'tạo ra một đối tượng tạm thời chưa được đặt tên và ngay lập tức phá hủy nó. Điều gì mà bạn _expected_ xảy ra? – ildjarn