以前一直未注意 构造函数在构造默认对象时,如果无参数传递绝不应该加括号
如
class TEST
{
public:
TEST(int){}
TEST(){}
void fun(){}
};
int main()
{
TEST t(10); //正确,传进参数10
TEST t(); //原意是利用默认构造函数构造一个默认的对象,事实上相当于声明一个函数t(),返回值为TEST,编译自然通过
t.fun(); //编译出错,t不是一个类或结构体
return 0;
}
很小的问题 可是现在才发现.....汗
本文指出在C++中使用构造函数创建默认对象时常见的错误做法:即在没有参数传递的情况下错误地使用了括号。这一小疏忽可能导致将类实例错误地解释为函数声明。
1576

被折叠的 条评论
为什么被折叠?



