legongju.com
我们一直在努力
2025-01-24 16:34 | 星期五

C++静态成员函数怎样实现多态

在 C++ 中,要实现多态,可以使用虚函数(virtual function)。虚函数是在基类中声明的,可以在派生类中重写(override)它。当通过基类指针或引用调用虚函数时,实际调用的函数是对象所指向对象的类中定义的版本。这就是动态绑定或多态的概念。

下面是一个简单的示例,展示了如何使用虚函数实现多态:

#include 

// 基类 Shape
class Shape {
public:
    // 虚函数 area()
    virtual double area() const {
        return 0.0;
    }
};

// 派生类 Circle,继承自 Shape
class Circle : public Shape {
public:
    // 重写虚函数 area()
    double area() const override {
        return 3.14 * radius * radius;
    }

private:
    double radius;
};

// 派生类 Rectangle,继承自 Shape
class Rectangle : public Shape {
public:
    // 重写虚函数 area()
    double area() const override {
        return width * height;
    }

private:
    double width;
    double height;
};

int main() {
    // 使用基类指针指向派生类对象
    Shape* shape1 = new Circle();
    Shape* shape2 = new Rectangle();

    // 通过基类指针调用虚函数 area(),实现多态
    std::cout << "Shape 1 area: " << shape1->area() << std::endl;
    std::cout << "Shape 2 area: " << shape2->area() << std::endl;

    delete shape1;
    delete shape2;

    return 0;
}

在这个示例中,我们定义了一个基类 Shape 和两个派生类 CircleRectangle。基类中有一个虚函数 area(),用于计算形状的面积。派生类分别重写了 area() 函数,以计算圆形和矩形的面积。

main() 函数中,我们使用基类指针 shape1shape2 分别指向 CircleRectangle 对象。然后通过基类指针调用 area() 函数,实际调用的函数是对象所指向对象的类中定义的版本。这就是多态的体现。

未经允许不得转载 » 本文链接:https://www.legongju.com/article/14369.html

相关推荐

  • c++ mysql库的数据更新与删除操作

    c++ mysql库的数据更新与删除操作

    在C++中,可以使用MySQL C++ Connector库来进行数据更新和删除操作。以下是一个简单的示例代码,展示如何使用MySQL C++ Connector库来进行数据更新和删除操作:<...

  • c++ memset_s与memset有何不同

    c++ memset_s与memset有何不同

    memset_s 和 memset 都是 C++ 中用于设置内存区域的函数,但它们之间存在一些关键差异 安全性:memset_s 是一个更安全的版本,因为它会检查目标缓冲区的大小。如...

  • c++中使用memset_s需要注意什么

    c++中使用memset_s需要注意什么

    在C++中,memset_s函数是一个安全的内存设置函数,它可以防止缓冲区溢出 包含头文件:在使用memset_s之前,请确保已经包含了正确的头文件。对于C++,应该包含头文...

  • c++ memset_s如何安全清零内存

    c++ memset_s如何安全清零内存

    在C++中,memset_s是一个安全的方法来清零内存
    #include
    #include int main() { char buffer[100]; // 填充缓冲区 for (int i = 0; i< sizeof(buffer)...

  • C++静态成员函数能访问非静态吗

    C++静态成员函数能访问非静态吗

    C++ 静态成员函数可以访问非静态成员,但需要使用类名或对象实例来调用。这是因为静态成员函数与类本身关联,而非静态成员函数与类的实例关联。
    以下是一个...

  • C++静态成员函数怎样调用

    C++静态成员函数怎样调用

    在 C++ 中,静态成员函数是属于类而不是属于类的实例(对象)的成员函数。要调用静态成员函数,您可以直接使用类名,而无需创建类的实例。以下是一个示例:

  • C++常量成员函数怎样使用

    C++常量成员函数怎样使用

    在C++中,常量成员函数(const member function)是一种特殊类型的成员函数,它不能修改调用它的对象的状态
    要声明一个常量成员函数,只需在函数声明和定义...

  • C++常量成员函数如何设计

    C++常量成员函数如何设计

    在C++中,常量成员函数(const member function)是一种特殊的成员函数,它保证在调用时不会修改对象的状态 声明:在成员函数的声明和定义后面加上const关键字。...