读书人

一个简单的类构造有关问题

发布时间: 2012-03-08 13:30:13 作者: rapoo

一个简单的类构造问题
为什么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;

读书人网 >C++

热点推荐