一个简单的类构造问题
为什么b.fun()编译不过?
struct Test
{Test() {}
Test( int ) {}
void fun() {}
};
void main( void )
{
Test a(1);
a.fun();
Test b();
b.fun();
}
[解决办法]
struct Test
{Test() {}
Test( int ) {}
void fun() {}
};
void main( void )
{
Test a(1);
a.fun();
Test b;
b.fun();
}
[解决办法]
cout < < typeid(b).name()试试吧。
你会比较震惊的。
C++的一个著名陷阱了。
[解决办法]
Test b();这句没有正确的构造起b对象
[解决办法]
Test b; not Test b();
[解决办法]
Test b();
=========
定义一个函数,类型T,函数名b,其参数表空,Test b才是执行构造函数
[解决办法]
构造一个对象
[解决办法]
为保持与c的兼容性,Test b();会被解释城声明一个参数表为空的函数
正确的写法是Test b;