C++构造函数的问题
#include "iostream.h "
class A
{
int i;
public:
A()
{cout < < "1 ";};
A(int x)
{cout < < "x ";}
};
void main()
{
A c1();//我这2个分别调用了哪2个构造函数?
//我发现第一个什么也没输出,第二个输出了一个 1 ,为什么第一个什么也没输出?
//难道它调用了系统的?
//不是说定义了A()这个构造函数就是系统内部的么?
A c2;
};
[解决办法]
cout < < typeid(c1).name();
看看吧。今天第二次有人问这个问题了。
C++著名陷阱之一。c1是声明了一个函数。
[解决办法]
A c1();//声明默认构造函数
就像和
A c(int);
一样
[解决办法]
A c1();编译器认为是函数
可以修改为A c1 = A::c1();
[解决办法]
A c1();无法调用默认构造函数,它只是声明了一个返回类型为A的无参函数。
A c1;才调用。
[解决办法]
C++著名陷阱之一。c1是声明了一个函数。
====================================
我也被陷了,呵呵,得mark一下~~
[解决办法]
A c1();是声明c1是个函数,而非A类型的对象。
函数声明就是 类型 函数名(参数)