博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C++中的继承(派生)的一些误区
阅读量:6711 次
发布时间:2019-06-25

本文共 926 字,大约阅读时间需要 3 分钟。

1.派生类继承了基类的全部数据成员和除了构造、析构函数之外的全部成员函数,但是这些成员的访问属性在派生的过程中通过继承方式可以来调整。

(个人理解:派生类复制了基类的所有东西,但是防止派生类的误用,或者基类的有些属性子类用不到(继承是全盘拷贝的),就通过继承方式public\private\protected来限制。)

 

2.派生类成员的构成

1)继承基类成员

2)改造基类成员

  由于基类成员在派生类中可能不起作用,但也被继承下来,在生成对象时要占用内存空间,造成浪费。

  改造基类的方法有:一是继承方式来控制,改变基类成员在派生类中的访问控制属性。

                          二是重载成员函数,则基类成员在派生类中被覆盖(但是仍然存在)。

3)添加新成员

可见:继承和派生的目的在于代码的重用。

3.派生类的构造函数

派生类对象自动拥有几类的所有数据成员,所以,在定义派生类的构造函数时除了对派生类的数据成员进行初始化外,还必须调用基类的构造函数初始化基类的数据成员。如果派生类中有对象成员时,还应该调用对象成员的构造函数初始化对象成员。

个人理解:因为派生类往往无法访问基类的数据成员(一般为private),所以用这种方式初始化基类的数据成员

一般格式:

<派生类名>(<总参数表>):<基类名>(< 参数表1>),<对象成员名>(< 参数表2>) //冒号以后内容称为成员初始化表

     <派生类数据成员的初始化>;

构造函数的调用顺序:基类的构造函数->对象成员的构造函数->派生类的构造函数

析构函数的调用顺序:派生类的析构函数->对象成员的析构函数->基类的析构函数

注意:析构函数没有参数,故不能重载

成员初始化表:其主要作用实在进入派生类的构造函数体前,调用基类的构造函数来初始化从基类继承下来的数据成员和对象成员。当然,派生类新成员也可以在初始化表中被初始化。

使用派生类构造函数注意:

1)当基类没有显式定义构造函数时,拍摄呢个累构造函数的初始化表可以省略对基类构造函数的调用,而采用隐含调用。

2)当基类的构造函数使用一个或者多个参数时,派生类必须定义构造函数,提供将参数传递给基类构造函数的途径。这时,派生类的构造函数体可能为空,仅起到参数传递的作用。

 

 

转载地址:http://poxlo.baihongyu.com/

你可能感兴趣的文章
深刻理解Java编程的7个例子
查看>>
虚拟网络编辑器的知识和出现的一些问题(没有VMnet0或VMnet8)
查看>>
hibernate一对一主键双向关联
查看>>
SVN 多分支管理
查看>>
用现代化的方式开发一个图片上传工具
查看>>
log4j email EmailDailyRollingFileAppender
查看>>
Js页面刷新前提示-jquery页面刷新事件
查看>>
基于STM32的学习型通用红外遥控设备的设计实现(三)
查看>>
在不同的浏览器下FORM及它的小伙伴们默认样式的CSS属性值是不全然一致
查看>>
关于rman duplicate 一些比較重要的知识点--系列三
查看>>
怎样制作gif图片?怎样制作你项目的动态效果图到你的csdn?
查看>>
日志平台中心建议
查看>>
oracle测试环境表空间清理
查看>>
async、await正确姿势
查看>>
solr6.6 导入 文本(txt/json/xml/csv)文件
查看>>
Linux配置Selenium+Chrome+Java实现自动化测试
查看>>
docker-compose中启动镜像失败的问题
查看>>
Hibernate Validation使用示例及讲解
查看>>
Python实现鸢尾花数据集分类问题——基于skearn的SVM
查看>>
微信服务号 redirect_uri域名与后台配置不一致,错误代码10003
查看>>