构造对象的问题
class AA
{
public:
virtual void funAA(){}
AA(int num){}
AA(){}
void output()
{
cout<<"aaaa"<<endl;
}
};
可以使用 AA aa(2),AA aa = AA(2),AA aa = AA()构造对象,为什么不能使用AA aa()构造对象呢? C++,构造对象
[解决办法]
没有参数的构造函数不能加括号,必须直接写AA aa;
在语言标准中,AA aa()这种写法用于声明一个返回值为AA的函数aa,而非定义一个AA类型的变量aa
[解决办法]
因为C++语言杂凑的东西太多, 语法难免偶尔猥琐一下。
AA aa(); 原本应该可以用来构造AA类型的对象 aa的, 但因为语法中函数声明优先级更高, 所以被解释为函数声明了,即函数aa无参返回类型AA。