C++学习补充

类的实用技术

重载<<运算符

在这里插入图片描述

转换函数

在这里插入图片描述
在这里插入图片描述

构造函数使用new的类

在这里插入图片描述

类的继承

类有三种权限分别为public,private,protect,因此就对应三种继承方式,公有继承,保护继承,私有继承。但是对于派生类来说有些东西是相同的,对于继承方式来说并没有区别。
1.构造派生类对象之前,先调用基类构造函数,然后初始化基类数据,以及派生类数据。
2.派生类可以使用基类的方法,前提条件是方法不是私有的
公有继承:建立一种is-a关系,派生类对象也是一种基类对象,可以对基类采取的行为同样适用于派生类。
多态公有继承:原理是同一方法在基类和派生类中实现不一样,派生类中重新定义基类方法;使用虚函数
在这里插入图片描述

静态联编与动态联编

向上强制转换:派生类向基类转换,可以隐式转换
向下强制转换:基类向派生类转换,只能显式转换
编译器对非虚方法采用静态联编,对虚方法采用动态联编。

虚函数工作原理

编译器处理虚函数的方法:给每个对象添加一个隐藏成员。隐藏成员中保存了一个指向函数地址数组的指针。这种数组称为虚函数表。虚函数表中存储了为类对象进行声明的虚函数的地址。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

访问控制:protected

protected和privated相似,在类外部,只能访问共有成员,而不能访问私有成员和保护成员。但是对于派生类来说,派生类成员可以访问基类的共有成员和保护成员,但是不能访问基类的私有成员。

抽象类

至少含有一个纯虚函数的类叫抽象类,而且抽象类不能创建对象,只能被继承。

virtual int show()=0;//纯虚函数

复制构造函数调用场景

1.将新对象初始化为一个同类对象
2.按值将对象传递给函数
3.函数按值返回对象
4.编译器生成临时对象

构造函数不被继承的原因

它创造一个对象,而其他方法只是被现有的对象调用而已,继承意味着派生类对象可以使用基类的方法。而构造函数在完成工作之前,并没有对象。

析构函数

基类的析构函数必须是虚函数

析构函数,构造函数,赋值运算符不能被构造

小结

在这里插入图片描述
派生类的赋值运算符/赋值构造函数也必须处理它的基类成员的赋值
derived& derived::operator=(const derived& rhs)
{
if (this == &rhs) return *this;

base::operator=(rhs); // 调用this->base::operator=
y = rhs.y;

return *this;
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值