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

为什么没有调用复制构造函数?解决思路

2012-02-29 
为什么没有调用复制构造函数?classBaseClass{public:BaseClass(){cout 基类的默认构造函数 endl

为什么没有调用复制构造函数?
class   BaseClass
{
public:
BaseClass()
{
cout < < "基类的默认构造函数 " < <endl;
}
BaseClass(int   a):price(a)
{
cout < < "基类的带参数构造函数 " < <endl;

}
        BaseClass(const   BaseClass   &in)
{
this-> price=in.price;
cout < < "基类的复制构造函数 " < <endl;
}

friend   ostream   &   operator < <(ostream   &os,const   BaseClass   &   a)
{
os < < "基类a.price= " < <a.price < <endl;
return   os;
}
private:
int   price;
};

int   main()
{
                BaseClass   baseArray[]={1,2,34};//听说这里是先调用带参的构造函数然后再复制拷贝构造函数
                                                                              //我怎么没看到调用拷贝构造函数呢?难道是被优化掉了?怎么样禁止优化?
cout < <baseArray[0] < <endl;
                return   0;

}

[解决办法]
BaseClass baseArray[]={1,2,34};
构造对象数组只能用无参数的构造函数.
[解决办法]
BaseClass baseArray[]={1,2,34};
就同于
BaseClass baseArray0(1);
BaseClass baseArray1(2);
BaseClass baseArray2(34);
本身就是实例化了三个对象,并不存在拷贝的问题呀.

热点排行