C++_练习—多态_virtual

多态_virtual


 /* 父类指针定义对象,当基类与派生类存在相同成员函数,编译器设置为基类中的版本,

    为静态多态/静态链接/早绑定:函数调用在程序执行前就准备好了!
    在父类相同函数前加 virtual 则编译器看指针的内容,而不是类型!

子类定义对象,当基类与派生类存在相同成员函数,调用子类!

父类定义对象,当基类与派生类存在相同成员函数,调用父类!
*/

 

 1 /* 父类指针定义对象,当基类与派生类存在相同成员函数,编译器设置为基类中的版本,
 2    为静态多态/静态链接/早绑定:函数调用在程序执行前就准备好了!
 3    在父类相同函数前加 virtual 则编译器看指针的内容,而不是类型!
 4 
 5    子类定义对象,当基类与派生类存在相同成员函数,调用子类!
    父类定义对象,当基类与派生类存在相同成员函数,调用父类!
6 */ 7 8 #include <iostream> 9 10 using namespace std; 11 12 class parent { 13 public: 14 parent(int age) { 15 this->age = age; 16 } 17 18 void pri(void) { 19 cout << "parent = " << age << endl; 20 } 21 22 private: 23 int age; 24 }; 25 26 class child : public parent{ 27 public: 28 child(int num):parent(6){ 29 this->num = num; 30 } 31 32 void pri(void) { 33 cout << "child = " << num << endl; 34 } 35 36 private: 37 int num; 38 }; 39 40 int main(void) 41 { 42 43 //方式一: 44 45 cout << "—— 方式一 ——" << endl; 46 47 parent paren(10); 48 paren.pri(); // 此时调用parent类中的pri(看this指针) 49 50 child chi(11); 51 chi.pri(); // 子类定义对象,当基类与派生类存在相同成员函数,调用子类!(看this指针) 52 //chi.parent::pri(); // 调用父类中pri 53 54 55 //方式二: 56 57 cout << "—— 方式二 ——" << endl; 58 59 child *c = &chi; 60 c->pri(); // 子类成员函数(看this指针) 61 62 63 //方式三: 64 65 cout << "—— 方式三 ——" << endl; 66 67 parent& b1 = paren; 68 parent& b2 = chi; 69 70 b1.pri(); // 父类成员函数 71 b2.pri(); //(加virtual看指针,不加则编译器设置为父类中的版本) 72 73 system("pause"); 74 75 return 0; 76 }

 

 

笔记


 

转载于:https://www.cnblogs.com/panda-w/p/11378259.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/549643.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

qt 错误 多继承 造成错误 “qt_metacast”: 不是“****”的成员

简介 多继承造成“qt_metacast”: 不是“****”的成员错误的解决方案。 原格式 class BezierSurface : public Strategy, public QGLWidget 更改后 class BezierSurface : public QGLWidget, public Strategy 参考链接 CSDN 转载于:https://www.cnblogs.com/eat-too-much/p/113…

百钱百鸡问题

问题陈述&#xff1a; 这是我国古代一道有名的数学难题&#xff0c;要求用100元买100只鸡&#xff0c;其中公鸡五元一只&#xff0c;母鸡三元一只&#xff0c;每种至少买一只&#xff0c;求购买方案&#xff0c;程序中以x代表公鸡&#xff0c;y代表母鸡&#xff0c;z代表小鸡 s…

在 CCR 环境中使用 Exchange 命令行管理程序移动存储组和数据库

作为Exchange管理员或许会遇到需要对Exchange Server存储组和数据库更改存储路径的情况&#xff0c;在常规情况下&#xff0c;更改Exchange Server存储组和数据库的路径一项比较简单的操作&#xff0c;通常在图形界面下经过简单的几步操作即可&#xff0c;路径更改过程数据库会…

C++_练习—多态_证明vptr指针的存在

证明vptr指针的存在 1 // 证明vptr指针的存在2 3 #include <iostream>4 5 using namespace std;6 7 class parent {8 public:9 parent(int a) { 10 this->a a; 11 } 12 13 virtual void pri(void) { 14 cout << "parent &…

(转)解读NTFS(一)

NTFS是一个比FAT复杂的多的文件系统&#xff0c;我们一起努力来把它完整的解读出来 NTFS的引导扇区也是完成引导和定义分区参数&#xff0c;和FAT分区不同&#xff0c;FAT分区的BOOT记录正常&#xff0c;就显示分区没有错误&#xff0c;即使文件不正确&#xff0c;而NTFS分区的…

路由器硬件结构

路由器是一种连接多个网络或网段的网络设备&#xff0c;它能将不同网络或网段之间的数据信息进行“翻译”&#xff0c;以使它们能够相互“读”懂对方的数据&#xff0c;从而构成一个更大的网络。路由器由硬件和软件组成。硬件主要由中央处理器、内存、接口、控制端口等物理硬件…

C++_练习—多态_验证vptr分布初始化

验证vptr分布初始化 vptr指针是从父类逐渐指向子类的虚函数表 1 // 验证vptr分布初始化2 3 #include <iostream>4 5 using namespace std;6 7 class parent {8 public:9 parent(int a) { 10 this->a a; 11 cout << "parent 构造函数 …

分区表分区字段的update操作

默认情况下&#xff0c;oracle的分区表对于分区字段是不允许进行update操作的&#xff0c;如果有对分区字段行进update&#xff0c;就会报错——ORA-14402: 更新分区关键字列将导致分区的更改。但是可以通过打开表的row movement属性来允许对分区字段的update操作。 例&#xf…

OCP-052考试题库汇总(38)-CUUG内部解答版

You want to audit update statements that refer to USER1.DEPT.DNAME. Which type of auditing must you use? A)standard auditing B)mandatory auditing C)value-based auditing D)fine-grained auditing Answer: D 赵&#xff1a; Fine-Grained Audit(FGA)&#xff0c;精…

C++_练习—多态_纯虚函数与抽象类

纯虚函数与抽象类 含有纯虚函数的类&#xff0c;称为抽象基类&#xff0c;不可实列化。即不能创建对象&#xff0c;存在的意义就是被继承&#xff0c;提供族类的公共接口。 1 // 纯虚函数与抽象类2 3 #include <iostream>4 5 using namespace std;6 7 class shape {8 pub…

深入理解Linux内存映射机制

Author: wztEMail: [email]wztxsec.org[/email]Site: [url]http://www.xsec.org[/url]Date: 2008-6-13一. 绪 论二. X86的硬件寻址方法三. 内核对页表的设置四. 实例分析映射机制一. 绪 论我们经常在程序的反汇编代码中看到一些类似0x32118965这样的地址&#xff0c;操作系统中…

NetCore的配置管理(1)

学习NetCore的配置管理&#xff1b; 目录 命令行配置Json文件配置配置文件文本至C#对象实例的映射配置文件热更新总结命令行配置&#xff1a; 打开VS2017,新建NetCore控制台项目&#xff1b; 打开nuget包管理&#xff1b;添加Microsoft.Asp.NetCore.all&#xff0c;或者使用命令…

buffer busy waits

buffer busy waitshttp://metalink.oracle.com/metalink/plsql/ml2_documents.showDocument?p_database_idNOT&p_id34405.1当会话想要访问缓冲存储器中的数据块&#xff0c;而该数据块正在被其它会话使用时产生buffer busywaits事件。其它会话可能正在从数据文件向缓冲区存…

推荐几个EDA网站

http://www.cnblogs.com/jianyungsun/archive/2011/05/12/2044898.html 1. OPENCORES.ORG 这里提供非常多&#xff0c;非常好的PLD了内核&#xff0c;8051内核就可以在里面找到。 进入后&#xff0c;选择project或者由http//www.opencores.org/browse.cgi/by_category进入。 h…

SetupFactory安装制作心得

很多年前&#xff0c;因为仰慕Install Shield的鼎鼎大名&#xff0c;所以很是花了些功夫研究了一番&#xff0c;最后&#xff0c;基本上也可以打出很完善的包了&#xff0c;其中也不乏一些很有难度的事情&#xff0c;比如ODBC的打包等。但它实在太难用了&#xff0c;过上一段时…

Timus 1114. Boxes

Timus 1114. Boxes 要求计算出将两种颜色的球放到盒子中的各种组合的数目。1114. Boxes Time Limit: 0.6 second Memory Limit: 16 MB N boxes are lined up in a sequence (1 ≤ N ≤ 20). You have A red balls and B blue balls (0 ≤ A ≤ 15, 0 ≤ B ≤ 15). The red bal…

写作知识点

1.逻辑框架 2.起承转合 3.写作套路 4.述说,正述,倒序, 先说结果,分析原因,解决方案,,方案检查,紧急预案,预期结果 转载于:https://www.cnblogs.com/zeenzhou/p/11388739.html

Speerio Skinergy 'Image' is ambiguous 错误

使用BeyondCSS皮肤时报错&#xff1a;Could Not Load Skin: /Portals/0/Skins/beyondcss/1column_speerio.ascx Error: E:"Development"DotNetNuke"InstallArea"DotNetNuke_04.08.03_Source"Website"controls"Speerio"Skinergy"s…

Sql Server中自动序号的方法

第一种:使用identity函数增加临时表的方法 selectid identity(int,1,1),*into#tmp fromtableselect*from#tmp droptable#tmp 在SQL2005中新增了ROW_NUMBER()函数,给我们带来了很多方便,使用方法如下: SELECTid,ROW_NUMBER() OVER(orderbyid)asRowNumber FROMTable有一个方便,as…

js- 对象 toString 的结果 [ object Object ]

alert({ }); 输出 [ object Object ] 除了null和undefined之外&#xff0c;其他的类型(数值、布尔、字符串、对象)都有toString()方法&#xff0c;它返回相应值的字符串表现(并不修改原变量)。每个对象都有一个toString()方法。当该对象被表示为一个文本值时&#xff0c;或者一…