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 = χ 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 }
笔记
Stay hungry, stay foolish
待续。。。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!