C++学习笔记06

1.

classic::classic():cd()
{
	ZYZP[0] = '\0';
}
classic::classic(const classic&c) : cd(c)
{
	strcpy_s(ZYZP,50,c.ZYZP);
}
classic::classic(const char* s1, const char* s2,const  char*s3,int n, double x) : cd(s2,s3,n,x)
{
	strcpy_s(ZYZP, 50, s1);
}

cd为classic的基类
在进入{}之前基类要被创立好,因此使用初始化列表 cd()
派生类的默认构造函数的初始化列表为调用基类的默认构造函数。
派生的复制构造函数的初始化列表为调用基类的复制构造函数,在{}中完成派生类对象的赋值。
派生类对象通过数据成员赋值的构造函数的初始化列表为调用这些数据成员参数的基类构造函数。
在这里插入图片描述
若将派生类引用或指针cc指向基类对象c1,则可通过cc.来调用派生类方法,但这样会出现问题,因此派生类引用或指针不能指向基类对象,但基类引用或指针可以指向派生类对象,反之可以
派生类对象属性可能比基类对象的多,直接赋值可能出问题,所以不被允许,派生类对象不能给基类对象赋值,反之可以
默认的基类赋值函数原型:
cd&operator=(const cd& cd);
cd c4=c2;可行是因为调用了重载的=,相当于cons cd& cd=c2,这是允许的。
默认的派生类赋值函数原型:
classic & opearator=(const classic& cs);
classic c3=c1;之所以不行是因为派生类引用不能指向基类对象。

在这里插入图片描述

report为虚方法,因此通过指向派生类对象的基类指针调用时调用的为指向对象(即派生类)的方法。

在这里插入图片描述
因为在派生类中使用了new,因此要定义显式的重载运算符。
基类也使用了new,因此也要定义显式的重载运算符;
派生类classic为公有继承,无法访问基类中的私有对象,因此基类中私有对象的赋值要交给基类的显式运算符,通过作用域来调用。

ps:使用动态内存分配即使用new,在private里定义指针,在默认构造函数中设置其为空指针(nullptr)。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值