首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

C++构造函数的有关问题

2012-02-09 
C++构造函数的问题#includeiostream.h classA{intipublic:A(){cout 1 }A(intx){cout x

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类型的对象。

函数声明就是 类型 函数名(参数)

热点排行