虚函数、C++类、结构体、父类与子类的继承性
转载请注明出处!
结构体只是多个关联变量的集合,不包含函数。
在面向对象的程序设计中,对象具有状态和行为,状态保存在成员变量中,行为通过成员函数实现。所以,类应运而生。
结构体的默认情况下,成员变量是共有public所有人都可以访问,类的默认情况下式private只有类成员函数可以访问。
Public:可以任何地方访问,protected:在该类和子类中访问。Private:该类自身中访问。
C++具有继承性,我们可以基于父类,创建子类。 比如可以基于CStatic 类创建一个子类CImshow类,用于显示图像。CImshow类中的对象可以调用父类CStatic中的函数。即子类可以写自己的函数,还可以调用父类的函数,这就是继承的好处。运行时,是先调用父类(父亲)的构造函数,在调用子类(孩子)的构造函数。
Void Main() //孙鑫 P49;
{
Anminal *pAn; // 父类
Fish fh; //子类
pAn = &fh;
fn(pAn); //全局函数
}
将子类的对象地址赋给父类的指针变量,在运行时,C++自动将子类转换成父类,调用父类的breath函数(有问题)。这是因为C++在编译时就确定了那个函数被调用,这叫做早期调用。
我们需要在运行时,根据对象的类型来调用是父类函数或子类的函数的迟绑定(这就是多态性)。这就是虚函数(虚函数virtual解决)。 在基类(父类)函数前加上virtual关键字,在派生类(子类)中重写该函数,运行时就会根据对象的实际类型来调用相应的函数。
虚函数、C++类、结构体、父类与子类的继承性相关推荐
- C++对象模型4——多重继承的对象内存模型、vptr与vtbl的创建与重置的时机、不要在含有虚函数的类的构造函数中调用memset
一.多重继承的对象内存模型 class Base1 { public:virtual void f() {cout << "base1::f()" << e ...
- Golang——结构体创建与初始化、结构体与数组、结构体与切片、结构体与map、结构体作为函数参数、结构体方法、结构体方法继承
结构体: 结构体是由一系列具有相同类型或不同类型的数据构成的数据集合 结构体可以很好的管理一批有联系的数据,使用结构体可以提高程序的易读性,类似于Java的类一样 不能在结构体直接赋值 字段名必须唯一 ...
- 【☀️C语言函数传参の结构体数组篇☀️】
背景介绍 C语言中函数参数传递的两种方式("引用传递做函数参数"是C++的特性,C语言不支持.) (1)传值,就是把你的变量的值传递给函数的形式参数,实际就是用变量的值来新生成一个 ...
- 如何理解虚表及其计算含虚函数的类的大小
在什么情况下系统会自动生成缺省(默认)的构造函数? 1.在类里面有一个类类型的对象,这个类有自己的缺省构造函数(有缺省的参数,参数有缺省值). class B { B(int data) { } } ...
- C语言试题五十二之学生的记录由学号和成绩组称个,n名大学生得数据已在主函数中放入结构体数组a中,请编写函数fun,它的功能时:按分数的高低排列学生的记录,高分在前。
1. 题目 请编写一个函数void function(Student a[], int n),其功能时:学生的记录由学号和成绩组称个,n名大学生得数据已在主函数中放入结构体数组a中,请编写函数fun, ...
- c语言 由函数组成的数组,学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun(),它的_考题宝...
学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun(),它的功能是按分数的高低排列学生的记录,低分在前. 注意:部分源程序给出如下. 请勿改动主函数main和其 ...
- 【C++】结构体 - 定义和使用,结构体数组,结构体指针,结构体嵌套结构体,结构体做函数参数,结构体 const
文章目录 1. 定义和使用 2. 结构体数组 3. 结构体指针 4. 结构体嵌套结构体 5. 结构体做函数参数 6. 结构体 const 1. 定义和使用 结构体属于用户自定义的数据类型,允许用户存储 ...
- 三菱R系列PLC程序 全部采用ST语言编写,内部使用函数块和结构体,程序思路清晰
三菱R系列PLC程序 全部采用ST语言编写,内部使用函数块和结构体,程序思路清晰,简洁明了. 通过结构体和函数块的使用,可以使您在程序编写水平得到很大提高. ST语言是PLC后续的主流语言,是日后编程 ...
- C++模板学习:函数模板、结构体模板、类模板
C++模板:函数.结构体.类 模板实现 1.前言:(知道有模板这回事的童鞋请忽视) 普通函数.函数重载.模板函数 认识. //学过c的童鞋们一定都写过函数sum吧,当时是这样写的: int sum(i ...
- C++57个入门知识点_17 类的访问权限及C语言模拟类的封装(类的私有权限突破方法:编译期进行权限检查,运行期通过指针修改类的私有成员变量;利用函数指针对结构体中成员变量进行修改;CPU大小尾排列)
接上篇:C++57个入门知识点_16 类的标准写法(类名.成员变量.成员函数及对象命名规则:成员变量一般为私有,成员函数为公有并暴露给外部使用成员变量:防止类过大,声明写在.h,实现写在.cpp,调用 ...
最新文章
- ctype_digit()函数
- 区块链——配置和使用geth
- java session 数量_java中使用session监听实现同帐号登录限制、登录人数限制
- geoServer的安装
- PHP中的__clone()
- 理解Fragment生命周期(一)
- SpringBoot + Eureka启动失败
- 10、Android--技巧
- linux安装openssl、swoole等扩展的具体步骤
- 平面一般力系最多可以求解_利用平面一般力系的平衡方程最多可求解几个未知量。( )...
- 计算机中文件夹属性有哪些,文件和文件夹属性
- linux pam鉴定令牌错误,linux – chsh:PAM身份验证失败
- Mentor.Graphics.AMS.v2011.1 Win32_64 1CD(电路设计)
- Referrer还是Referer? 一个迷人的错误
- Network Password Recovery工具查看windows凭据密码
- 托尔斯泰《战争与和平》主要人物
- 数字信号与图像处理实验一:信号处理基础
- python 文件锁 portalocker
- 最大子矩阵(悬挂线)
- 陷波器介绍_50Hz工频信号陷波器设计
热门文章
- Linux下安装grafana
- win10文件后缀名怎么显示_显示文件类型扩展名图文教程,win电脑系统文件修改后缀名方法...
- linux 读取权限目录权限,文件的读取与写入权限《 Linux 文件与目录权限 》
- java中运用数组排序_JAVA中运用数组的四种排序方法
- php excel parser pro v4.2,PHP Excel Parser Pro v4.2怎么用
- 双调欧几里得旅行商问题_遗传模拟退火算法求解旅行商(TSP)问题MATLAB代码讲解...
- linux shell读取文件,shell脚本中读取文件的方法
- jmeter java性能_性能测试十一:jmeter进阶之java请求
- 解决Android studio在虚拟机上可以正常运行,而在手机上闪退的问题
- volatile c语言_C语言系列文章之volatile