读书人

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

发布时间: 2012-02-29 16:44:11 作者: rapoo

为什么没有调用复制构造函数?
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);
本身就是实例化了三个对象,并不存在拷贝的问题呀.

读书人网 >C++

热点推荐