转载请注明出处!

结构体只是多个关联变量的集合,不包含函数。

在面向对象的程序设计中,对象具有状态和行为,状态保存在成员变量中,行为通过成员函数实现。所以,类应运而生。

结构体的默认情况下,成员变量是共有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++类、结构体、父类与子类的继承性相关推荐

  1. C++对象模型4——多重继承的对象内存模型、vptr与vtbl的创建与重置的时机、不要在含有虚函数的类的构造函数中调用memset

    一.多重继承的对象内存模型 class Base1 { public:virtual void f() {cout << "base1::f()" << e ...

  2. Golang——结构体创建与初始化、结构体与数组、结构体与切片、结构体与map、结构体作为函数参数、结构体方法、结构体方法继承

    结构体: 结构体是由一系列具有相同类型或不同类型的数据构成的数据集合 结构体可以很好的管理一批有联系的数据,使用结构体可以提高程序的易读性,类似于Java的类一样 不能在结构体直接赋值 字段名必须唯一 ...

  3. 【☀️C语言函数传参の结构体数组篇☀️】

    背景介绍 C语言中函数参数传递的两种方式("引用传递做函数参数"是C++的特性,C语言不支持.) (1)传值,就是把你的变量的值传递给函数的形式参数,实际就是用变量的值来新生成一个 ...

  4. 如何理解虚表及其计算含虚函数的类的大小

    在什么情况下系统会自动生成缺省(默认)的构造函数? 1.在类里面有一个类类型的对象,这个类有自己的缺省构造函数(有缺省的参数,参数有缺省值). class B { B(int data) {  } } ...

  5. C语言试题五十二之学生的记录由学号和成绩组称个,n名大学生得数据已在主函数中放入结构体数组a中,请编写函数fun,它的功能时:按分数的高低排列学生的记录,高分在前。

    1. 题目 请编写一个函数void function(Student a[], int n),其功能时:学生的记录由学号和成绩组称个,n名大学生得数据已在主函数中放入结构体数组a中,请编写函数fun, ...

  6. c语言 由函数组成的数组,学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun(),它的_考题宝...

    学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun(),它的功能是按分数的高低排列学生的记录,低分在前. 注意:部分源程序给出如下. 请勿改动主函数main和其 ...

  7. 【C++】结构体 - 定义和使用,结构体数组,结构体指针,结构体嵌套结构体,结构体做函数参数,结构体 const

    文章目录 1. 定义和使用 2. 结构体数组 3. 结构体指针 4. 结构体嵌套结构体 5. 结构体做函数参数 6. 结构体 const 1. 定义和使用 结构体属于用户自定义的数据类型,允许用户存储 ...

  8. 三菱R系列PLC程序 全部采用ST语言编写,内部使用函数块和结构体,程序思路清晰

    三菱R系列PLC程序 全部采用ST语言编写,内部使用函数块和结构体,程序思路清晰,简洁明了. 通过结构体和函数块的使用,可以使您在程序编写水平得到很大提高. ST语言是PLC后续的主流语言,是日后编程 ...

  9. C++模板学习:函数模板、结构体模板、类模板

    C++模板:函数.结构体.类 模板实现 1.前言:(知道有模板这回事的童鞋请忽视) 普通函数.函数重载.模板函数 认识. //学过c的童鞋们一定都写过函数sum吧,当时是这样写的: int sum(i ...

  10. C++57个入门知识点_17 类的访问权限及C语言模拟类的封装(类的私有权限突破方法:编译期进行权限检查,运行期通过指针修改类的私有成员变量;利用函数指针对结构体中成员变量进行修改;CPU大小尾排列)

    接上篇:C++57个入门知识点_16 类的标准写法(类名.成员变量.成员函数及对象命名规则:成员变量一般为私有,成员函数为公有并暴露给外部使用成员变量:防止类过大,声明写在.h,实现写在.cpp,调用 ...

最新文章

  1. ctype_digit()函数
  2. 区块链——配置和使用geth
  3. java session 数量_java中使用session监听实现同帐号登录限制、登录人数限制
  4. geoServer的安装
  5. PHP中的__clone()
  6. 理解Fragment生命周期(一)
  7. SpringBoot + Eureka启动失败
  8. 10、Android--技巧
  9. linux安装openssl、swoole等扩展的具体步骤
  10. 平面一般力系最多可以求解_利用平面一般力系的平衡方程最多可求解几个未知量。( )...
  11. 计算机中文件夹属性有哪些,文件和文件夹属性
  12. linux pam鉴定令牌错误,linux – chsh:PAM身份验证失败
  13. Mentor.Graphics.AMS.v2011.1 Win32_64 1CD(电路设计)
  14. Referrer还是Referer? 一个迷人的错误
  15. Network Password Recovery工具查看windows凭据密码
  16. 托尔斯泰《战争与和平》主要人物
  17. 数字信号与图像处理实验一:信号处理基础
  18. python 文件锁 portalocker
  19. 最大子矩阵(悬挂线)
  20. 陷波器介绍_50Hz工频信号陷波器设计

热门文章

  1. Linux下安装grafana
  2. win10文件后缀名怎么显示_显示文件类型扩展名图文教程,win电脑系统文件修改后缀名方法...
  3. linux 读取权限目录权限,文件的读取与写入权限《 Linux 文件与目录权限 》
  4. java中运用数组排序_JAVA中运用数组的四种排序方法
  5. php excel parser pro v4.2,PHP Excel Parser Pro v4.2怎么用
  6. 双调欧几里得旅行商问题_遗传模拟退火算法求解旅行商(TSP)问题MATLAB代码讲解...
  7. linux shell读取文件,shell脚本中读取文件的方法
  8. jmeter java性能_性能测试十一:jmeter进阶之java请求
  9. 解决Android studio在虚拟机上可以正常运行,而在手机上闪退的问题
  10. volatile c语言_C语言系列文章之volatile