C++三大特性之继承简述

一.概念:派生类,基类
C++继承
Ps:
protected的成员,只能在成员方法中访问
默认继承方式为private
二.实例化方式
(1)堆中实例化对象:

Worker *p=new Worker();
delete p;     //delete手动释放内存,否则内存泄漏
p=NULL;       //将指针至于安全状态

(2)栈中实例化对象:

Worker worker;//系统自动释放内存

三.覆盖与隐藏
(1)覆盖:父类存子类对象
(2)隐藏:同名即可
四.构造函数
(1)声明:

Worker(int code=0,string name=”jim”);//可以不赋值

(2)定义:

Worker(int code,string name):Person(name) //初始化列表

参数顺序
五.形参—>实参
(1)p—>p;创建临时对象
(2)P—->&P引用,即别名; 靠“p.”调用成员
(3)&P–>*P指针; 靠“p->”调用成员
ps:
在实例化临时参数对象时,调用的是拷贝构造函数

Person::Person(const Person &)//拷贝构造函数的示例

六.虚析构函数
(1)引入原因:父类指向堆中的子类对象,在释放内存时,只执行父类析构函数,会造成内存泄漏;
(2)适用:基类
(3)误用弊端:会为类增加一个虚函数表,使得对象的体积翻倍,还有可能降低其可移植性
(4)继承:继承的虚函数在子类中仍是虚函数,可以被覆盖
(5)建议:虽然其子类析构函数也自动为virtual,但建议写上virtual,会更明了一些
七.虚继承:虚继承并没有获得底层子类参数的传递,参数只是顶层父类的默认参数
八.多继承与多重继承的区分

补充

1.””与<>区别:””在当前路径查找文件,<>在默认库中查找文件
2.解决重定义 —-宏定义:
宏定义
3.Stdlib.h文件下的system(“pause”)让CPU处于等待状态,不能执行其他任务,造成浪费

编程习惯

1.变量命名方法:数据类型+数据意义;eg:iAge,strName (若为属性,则在前面加上m_)
2.利用好protected,private,public的数据权限
3.父类默认构造函数要写,因子类实例化时调用了父类的默认构造函数,除非子类构造函数的初始化列表里写了父类的含参构造函数
这里写图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值