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

难道可以不定义复制构造函数吗?该怎么处理

2012-03-07 
难道可以不定义复制构造函数吗?#includestdio.hclassA{private:intnumpublic:A(intb){numb}voidshuch

难道可以不定义复制构造函数吗?
#include   <stdio.h>
class   A
{
private:
int   num;
public:
A   (int   b)
{
        num=b;
}
void   shuchu(void)
{
printf( "%d ",num);
}
};
void   main()
{
        A   A2(7);
        A   A1=A2;

A1.shuchu();
}
我想问一下,这样可以直接用一个对象来初始化另一个对象。我觉得可以不用定义复制构造函数了,这样对吗?

[解决办法]
你没定义的话, 编译器会自动帮你生成一个缺省的复制函数
[解决办法]
对于你这个简单的类来说,的确可以这样,但是在某些情况下(类比较复杂),你这种方式是不良的,甚至有可能给程序带来危险

楼主不妨去看看 C++里谈到的 浅拷贝与深度拷贝 这方面的介绍里一定会说明你的这种代码什么时候是有问题的。

热点排行