返回信息流今天测试调用基类复制构造函数时,显示写复制构造函数,开始没有显式写默认构造函数,vs2005中提示错误。写上才不会报错。
谁帮我解释一下,为什么,
#include<iostream>
using namespace std;
class base{
public:
base(){}//这里没有默认构造函数会出错
base(const base& b)
{
cout<<"this is base copy constructor"<<endl;
}
};
class deprived : public base{
public:
deprived(){}//这里没有默认构造函数会出错
deprived(const deprived & d):base(d)
{
cout<<"this is deprived copy constructor."<<endl;
}
};
int main()
{
deprived d1 ;
deprived d2 = d1 ;
system("pause");
return 0 ;
}
这是一条镜像帖。来源:北邮人论坛 / cpp / #82100同步于 2014/9/3
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖
为什么显式写了类的复制构造函数,不写默认构造函数会出错?
t330
2014/9/3镜像同步8 回复
订阅后,新回复会通过你的通知中心匿名送达。
8 条回复
酱紫!学了C++这几年都白学了,原来是这样子。。。
【 在 xiaobing307 的大作中提到: 】
: 因为复制构造函数是构造函数,你显式定义了复制构造函数,编译器就不会帮你合成默认构造函数了。
【 在 kayla 的大作中提到: 】
: 只有在你没写构造函数的时候,编译器才会帮你加一个默认构造函数。
: 你写了拷贝构造函数,它就不给你加了。
: 然后就错了。
嗯好的,多谢