联想a390t线刷教程:请教:一个简单的C++构造函数问题

来源:百度文库 编辑:神马品牌网 时间:2024/05/08 14:43:24
//定义一个类
class group
{
public:
group()
{ cout<<"hello"<<endl;}
group(int i)
{a=i;cout<<"hello again!"<<endl;}
private:
int a;
};
void main()
{
group one();
group two(4);
}
运行结果:为什么第一个对象没有调用构造函数?

group one();这样只是在main()里面声明了一个返回group对象的one函数呵呵,LZ可不要被迷惑了呀.
正常的声明一个用默认构造函数生成的对象,应该是这样的:
group one;

构造函数的作用是对类对象成员进行初始化。
第一次调用group one();时没有private: int a; 初始化;真正的初始化是在第二次调用group two(4); 完成的,所以说第一个对象没有调用构造函数。:)

因为“group one();”这句话有二义性,可以理解为构造一个对象,也可以理解为一个函数名为one返回值为group的函数的声明,如果是后者,当然就不会调用构造函数了,改为group one;就可以了