
学习完第七章多态性相关内容我对C面向对象编程的核心精髓有了全新且透彻的理解。封装、继承、多态是面向对象三大支柱如果说封装规范了数据访问、继承实现了代码复用那多态就是让程序具备灵活拓展能力的关键这一章层层递进的知识点彻底打通了我此前对类与对象、继承体系的认知壁垒。本章开篇先概述多态的核心思想同一个接口不同对象实现不同行为这也是多态“一个名字多种形态”的本质。随后运算符重载让我直观体会到多态的基础表现。运算符原本只能处理内置数据类型通过重载我们可以为自定义类赋予加减、比较、输入输出等运算能力。我分清了两种重载形式作为友元函数适合二元运算符作为成员函数更适配单目运算符同时牢牢记住重载不能改变运算符优先级、操作数个数等硬性规则。编写复数类重载运算符的练习让我明白运算符重载不是简单改写符号而是让自定义类型贴合人的直观使用习惯提升代码可读性。虚函数是本章重难点静态联编与动态联编的对比解开了我长久的疑惑。不加virtual修饰时程序在编译阶段就锁定函数调用地址也就是静态联编基类指针或引用指向派生类对象时只会调用基类同名函数无法体现子类独有逻辑。而虚函数依靠虚函数表把函数地址绑定推迟到程序运行时实现动态联编。只要基类函数声明为virtual派生类同名同参函数自动成为虚函数哪怕不加virtual关键字也生效。这里我也意识到一个极易踩坑的细节必须使用基类指针/引用才能触发动态多态如果直接用对象赋值会发生切片丢失派生类拓展成员多态效果直接失效。虚析构函数的知识点尤为重要当通过基类指针释放派生类对象时若析构函数不是虚函数只会执行基类析构派生类动态内存无法释放造成内存泄漏这是工程开发中必须遵守的规范。抽象类与纯虚函数是多态的高阶应用。仅声明、无函数体的纯虚函数让类无法实例化成为抽象类它只负责定义统一公共接口强制派生类重写全部纯虚函数否则派生类依旧是抽象类不能创建对象。抽象类完美契合“开闭原则”新增业务场景时只需新建派生类实现接口原有调用逻辑完全不用修改。对象指针数组则把抽象类的价值落地数组存储不同派生类的基类指针循环调用统一接口就能自动执行各类独有的实现代码简洁又易于拓展。梳理完整章内容我也发现了自身不少薄弱点重载运算符时容易混淆友元与成员函数适用场景虚函数、纯虚函数的语法边界时常模糊运行时多态的底层虚表原理理解仍不够深入。后续我会通过矩形、圆形图形类抽象案例实操强化抽象类与多态调用编写字符串类重载各类运算符巩固重载规则刻意练习基类指针释放派生对象的场景牢记虚析构函数的使用规范。多态让C跳出了结构化程序死板的执行逻辑赋予代码极高的扩展性与复用性。这一章的学习不只是掌握语法更是建立面向对象的设计思维。今后编写程序时我会主动利用多态思想搭建分层架构用抽象类定义标准接口依靠虚函数实现差异化逻辑写出低耦合、易维护的高质量代码。对应代码练习