class T {
public:
T(int i) :_i(i) {}
private:
int _i;
};
class U {
private:
T t;
};
如果定义了一个构造函数不是就会取消合成的默认构造函数吗?
可以定义不可以赋值是吧?刚才发现
const int ci;
int &ri;
也通过编译了。
语法这么规定的,因为t是成员变量
如果你写在函数里
main()
{
T t;
}
那就报错了。
通过编译是因为你既没有T类的对象也没有U类的对象
你在被调用到的函数里任意写上U u;或T t;
编译就过不去了
你那是声明一个对象,并没有为他分配内存
那是因为你到现在为止并没有生成类实例,并没有要调用默认构造函数,当你需要调用它的时候,编译器会自动为你调用