C++ 第七章多态性学习笔记与心得
一、核心知识点整理
第七章多态性是 C++ 面向对象编程最重要的特性之一,整章内容分为运算符重载、虚函数、抽象类三大模块,层层递进构建起静态多态与动态多态的完整体系。
运算符重载是编译时静态多态的实现方式。C++ 允许重新定义运算符作用于自定义类的行为,分为成员函数重载和友元函数重载两种形式。重载必须遵守固定规则:不能更改运算符原本的优先级、结合性以及操作数个数,不能创造全新运算符。合理重载赋值、算术、下标、括号运算符后,自定义类对象可以像 int、double 等内置类型一样直接使用运算符,极大简化代码书写,提升程序可读性。友元重载适合左右操作数不对称的场景,成员函数重载更贴合类的封装特性,使用时要根据需求合理选择。
虚函数是运行时动态多态的核心,学习首先要分清静态联编和动态联编。静态联编在编译阶段就绑定函数地址,执行效率高但灵活性不足;动态联编在程序运行时,依据指针或引用指向的真实对象类型匹配对应函数。基类用 virtual 关键字声明虚函数,派生类保持函数原型一致完成重写,基类指针指向不同派生类对象,就会自动调用对应版本的函数,实现 “一个接口,多种行为”。虚析构函数是极易忽略的关键点,基类析构函数设为虚函数后,基类指针释放派生类对象时,会优先执行派生类析构函数再执行基类析构,有效避免派生类内存泄漏问题。
抽象类依托纯虚函数产生,纯虚函数只有声明没有函数体,只要类包含纯虚函数就是抽象类。抽象类无法直接创建实例对象,只能作为基类被继承,派生类必须实现全部纯虚函数,才能实例化对象。利用抽象类对象指针数组,可以统一管理众多不同派生类对象,批量调用重写后的虚函数,极大增强代码扩展性与维护性,是框架设计常用的思想。
二、学习难点与心得体会
初学阶段我经常混淆静态多态和动态多态,误以为运算符重载和虚函数原理一致,调试代码时出现派生类函数无法正常调用的问题。反复练习后才明白,运算符重载编译就确定执行逻辑,虚函数依靠虚表运行时匹配地址,二者机制完全不同。虚析构函数的重要性起初理解不深,多次测试内存泄漏案例后,才意识到这是工程开发中规避隐患的必备写法。抽象类不能实例化的约束看似限制,实则是强制统一子类接口,规范程序结构。
多态思想打破了传统编程固定执行的模式,让代码拥有自适应能力。继承实现代码复用,多态实现灵活调用,二者结合让 C++ 面向对象设计更加完善。今后我会多完成运算符重载、动物抽象类体系、多态数组实操练习,吃透虚函数表底层原理,扎实掌握多态技术,为后续大型项目开发打好基础。
更多推荐
所有评论(0)