class B
{
A aa();//这个地方!!这一行这样写运行没有错误
//如果这一行换成A aa(6);运行有错误,为什么呀??
};
A aa();// 因为编译器把它当成了一个函数了 函数名为aa,返回值类型为A;
//如果这一行换成A aa(6);运行有错误,为什么呀??
同样被当成函数了,A为返回值类型,aa为函数名,参数表你给一个常数6当然报错啦。
正确的方法是
class B
{
A aa;
public:
B(){}
B(int a) : aa(a){} // 类的成员变量必须在构造函数
// 初始化列表或者函数中初始化
};