首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何确定在使用指针数组时指向哪个派生类

在使用指针数组时,确定指向哪个派生类需要使用多态性。多态性允许您在运行时根据对象的实际类型来调用适当的方法。以下是一个简单的示例,说明如何在使用指针数组时确定指向哪个派生类:

代码语言:cpp
复制
#include<iostream>
using namespace std;

class Base {
public:
    virtual void display() {
        cout << "Base class display function"<< endl;
    }
};

class Derived1 : public Base {
public:
    void display() override {
        cout << "Derived1 class display function"<< endl;
    }
};

class Derived2 : public Base {
public:
    void display() override {
        cout << "Derived2 class display function"<< endl;
    }
};

int main() {
    Base* base_ptr[2];
    Derived1 d1;
    Derived2 d2;

    base_ptr[0] = &d1;
    base_ptr[1] = &d2;

    for (int i = 0; i < 2; i++) {
        base_ptr[i]->display();
    }

    return 0;
}

在这个示例中,我们有一个基类 Base 和两个派生类 Derived1Derived2。我们使用虚函数 display() 实现了多态性。我们创建了一个指向基类的指针数组 base_ptr,并将两个派生类的对象的地址分别存储在数组中。

for 循环中,我们调用 display() 函数。由于 display() 函数是虚函数,因此在运行时将根据对象的实际类型来调用适当的方法。因此,我们可以确定指针数组中的每个元素实际上指向哪个派生类。

输出将是:

代码语言:txt
复制
Derived1 class display function
Derived2 class display function

这表明指针数组中的第一个元素指向 Derived1 类,第二个元素指向 Derived2 类。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • C++经典面试题(最全,面中率最高)

    delete会调用对象的析构函数,和new对应free只会释放内存,new调用构造函数。malloc与free是C++/C语言的标准库函数,new/delete是C++的运算符。它们都可用于申请动态内存和释放内存。对于非内部数据类型的对象而言,光用maloc/free无法满足动态对象的要求。对象在创建的同时要自动执行构造函数,对象在消亡之前要自动执行析构函数。由于malloc/free是库函数而不是运算符,不在编译器控制权限之内,不能够把执行构造函数和析构函数的任务强加于malloc/free。因此C++语言需要一个能完成动态内存分配和初始化工作的运算符new,以及一个能完成清理与释放内存工作的运算符delete。注意new/delete不是库函数。

    03
    领券