很诡异的构造函数,求解惑#include iostreamclass Object{public:Object(){std::cout constructor of
很诡异的构造函数,求解惑
#include <iostream>
class Object
{
public:
Object(){
std::cout << "constructor of Object" << std::endl;
}
Object(const Object & a){
std::cout << "copy constructor of Object" << std::endl;
}
};
int main(int argc, char* argv[])
{
Object obj(Object()); //why it output nothing???
return 0;
}
按理说执行Object()会调用Object的无参构造函数,而用Object()初始化obj对象的时候会调用copy constructor。
但是这段代码运行后什么都没有输出,求解惑。
[解决办法]
Object obj(Object());
编译器认为这是一个函数声明
[解决办法]
估计也编译器有关吧,我用的是vc++ 6.0 和vs2008 你是不是用的gcc啊
[解决办法]
VS2008下得warning:
warning C4930: 'Object obj(Object (__cdecl *)(void))': prototyped function not called (was a variable definition intended?)
