难道可以不定义复制构造函数吗?该怎么处理
难道可以不定义复制构造函数吗?
#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++里谈到的 浅拷贝与深度拷贝 这方面的介绍里一定会说明你的这种代码什么时候是有问题的。
#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++里谈到的 浅拷贝与深度拷贝 这方面的介绍里一定会说明你的这种代码什么时候是有问题的。