继承实现类间复用,多态通过虚函数支持动态绑定;基类应定义虚析构函数以防资源泄漏,纯虚函数用于构建抽象类以规范接口。

在C++中,继承与多态是面向对象编程的核心特性。通过继承,子类可以复用并扩展父类的功能;而多态则允许同一接口表现出不同的行为,主要依靠虚函数机制实现。
继承让一个类(派生类)获取另一个类(基类)的成员变量和成员函数。语法格式如下:
class Base {class Derived : public Base {
public:
void func() { cout << "Derived func" << endl; }
void vfunc() override { cout << "Derived vfunc" << endl; }
};
上述代码中,Derived 继承自 Base,采用公有继承方式。此时,Derived 类会拥有 Base 类的全部公有成员。注意:普通函数 func() 是静态绑定,而 vfunc() 被声明为 virtual,支持动态绑定。
多态的关键在于虚函数。当基类中的函数被声明为 virtual,派生类重写该函数后,通过基类指针或引用调用该函数时,会根据实际对象类型决定调用哪个版本。
立即学习“C++免费学习笔记(深入)”;
示例:
Base* ptr = new Derived();这里虽然指针类型是 Base*,但指向的是 Derived 对象,且 vfunc 是虚函数,因此调用的是 Derived 的实现。这种机制依赖于虚函数表(vtable)和虚函数指针(vptr),每个包含虚函数的类都有一个 vtable,记录了虚函数的实际地址。
若希望某个类不能被实例化,并强制派生类实现特定函数,可使用纯虚函数:
class Shape {class Circle : public Shape {
public:
void draw() override { cout << "Drawing Circle" << endl; }
};
Shape 是抽象类,无法创建实例。只有实现了 draw() 的派生类(如 Circle)才能被实例化。这是实现接口规范的常用方式。
当通过基类指针删除派生类对象时,若基类析构函数不是虚函数,可能导致派生部分未被正确释放。
正确做法:
class Base {class Derived : public Base {
public:
~Derived() { cout << "Derived destroyed" << endl; }
};
此时 delete ptr(指向 Derived 的 Base*)会先调用 Derived 的析构函数,再调用 Base 的,确保完整清理资源。
基本上就这些。掌握继承结构和虚函数机制,就能有效设计出灵活、可扩展的C++类体系。关键点是理解静态绑定与动态绑定的区别,以及合理使用 virtual 和 override 关键字。不复杂但容易忽略细节。
以上就是c++++如何实现继承与多态_C++面向对象继承结构与虚函数实现的详细内容,更多请关注php中文网其它相关文章!
c++怎么学习?c++怎么入门?c++在哪学?c++怎么学才快?不用担心,这里为大家提供了c++速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号