首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

构造对象的有关问题

2013-11-18 
构造对象的问题class AA{public:virtual void funAA(){}AA(int num){}AA(){}void output(){coutaaaa

构造对象的问题
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
[解决办法]

引用:
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。

热点排行