C++继承:从基础到高级实战指南

张开发
2026/4/3 17:50:41 15 分钟阅读
C++继承:从基础到高级实战指南
继承的基本概念继承是面向对象编程的核心特性之一允许一个类派生类基于另一个类基类来构建。派生类继承基类的属性和方法同时可以扩展或修改它们。继承的主要目的是实现代码复用和层次化分类。基类父类被继承的类提供通用属性和方法。派生类子类继承基类的类可以添加新功能或覆盖基类行为。继承类型公有继承public基类的公有和保护成员在派生类中保持原有访问权限。保护继承protected基类的公有和保护成员在派生类中变为保护权限。私有继承private基类的公有和保护成员在派生类中变为私有权限。基本语法继承用一个表示classBaseClass{public:intpublicVar;voidpublicMethod(){}protected:intprotectedVar;private:intprivateVar;};classDerivedClass:publicBaseClass{// 派生类可以访问BaseClass的public和protected成员voidexample(){publicVar1;// 允许protectedVar2;// 允许// privateVar 3; // 错误不可访问}};继承的常见用法1. 公有继承最常用派生类继承基类的接口同时可以扩展功能classAnimal{public:voideat(){coutEating...endl;}};classDog:publicAnimal{public:voidbark(){coutBarking!endl;}};Dog d;d.eat();// 继承自Animald.bark();// Dog新增方法2. 方法覆盖重写派生类可以重新定义基类的虚函数多态基础classShape{public:virtualvoiddraw(){coutDrawing Shapeendl;}};classCircle:publicShape{public:voiddraw()override{coutDrawing Circleendl;}};Shape*snewCircle();s-draw();// 输出Drawing Circle多态3. 访问控制通过继承类型控制成员可见性classBase{public:intx;protected:inty;};classPubDerived:publicBase{// x仍是publicy仍是protected};classPrivDerived:privateBase{// x和y都变为private};注意事项构造函数/析构函数派生类构造函数会默认调用基类的默认构造函数。若需调用基类特定构造函数需使用初始化列表classDerived:publicBase{public:Derived(inta):Base(a){}// 调用Base的带参构造函数};多重继承C支持一个类继承多个基类需谨慎使用可能引发菱形继承问题classA{/*...*/};classB{/*...*/};classC:publicA,publicB{/*...*/};虚继承解决多重继承时的二义性问题classA{/*...*/};classB:virtualpublicA{/*...*/};classC:virtualpublicA{/*...*/};classD:publicB,publicC{/*...*/};// A的成员只有一份

更多文章