C++ 多态 - 公有继承(c++继承与多态)

C++ 多态 - 公有继承(c++继承与多态)

编码文章call10242025-08-02 15:22:054A+A-

多态是面向对象编程的重要特性之一,它允许我们通过基类指针或引用调用派生类的成员函数。在C++中,多态通常是通过虚函数和继承来实现的。其中,公有继承是实现多态的一种重要方式。

公有继承是指派生类继承了基类的所有成员,包括成员变量和成员函数。当我们使用公有继承时,基类中的公有成员和受保护成员可以被派生类访问,而私有成员则无法被派生类访问。派生类可以通过继承基类的成员函数来访问基类的成员变量,也可以覆盖基类的成员函数来实现多态。

多态的实现是通过虚函数来完成的。虚函数是一种特殊的成员函数,它在基类中被声明为虚函数,并且在派生类中被重写。当我们通过基类指针或引用调用虚函数时,实际调用的是派生类中的虚函数,从而实现多态。

下面是一个简单的示例,演示了多态公有继承的用法:

#include <iostream>

class Shape {
public:
    virtual void draw() { std::cout << "Drawing a shape." << std::endl; }
};

class Rectangle : public Shape {
public:
    void draw() { std::cout << "Drawing a rectangle." << std::endl; }
};

class Circle : public Shape {
public:
    void draw() { std::cout << "Drawing a circle." << std::endl; }
};

int main() {
    Shape* shape1 = new Rectangle();
    Shape* shape2 = new Circle();
    
    shape1->draw(); // 输出 "Drawing a rectangle."
    shape2->draw(); // 输出 "Drawing a circle."
    
    delete shape1;
    delete shape2;
    
    return 0;
}

需要注意的是,只有将基类的成员函数声明为虚函数,才能在派生类中进行重写,并实现多态。否则,无论通过基类指针还是派生类指针调用该函数,都将只能调用到基类中的函数。

点击这里复制本文地址 以上内容由文彬编程网整理呈现,请务必在转载分享时注明本文地址!如对内容有疑问,请联系我们,谢谢!
qrcode

文彬编程网 © All Rights Reserved.  蜀ICP备2024111239号-4