gpt4 book ai didi

c++ - 如何在多态中调用子对象的重载函数?

转载 作者:太空狗 更新时间:2023-10-29 23:47:47 24 4
gpt4 key购买 nike

考虑以下简单的多态性......

class Parent {
public:
someFunc() { /* implementation A */ };
};

class Child : public Parent {
public:
someFunc() { /* implementation B */ };
};

int main ()
{
Parent* ptr;

ptr = new Parent();
ptr->someFunc();
delete ptr;

ptr = new Child();
ptr->someFunc();
delete ptr;

return 0;
}

据我所知,在这两种情况下都会调用实现 A。

如何根据 ptr 的动态类型调用 someFunc 的“最派生”实现?

在我的真实代码中有很多子类,所以使用 dynamic_cast 来检查每个子类是不切实际的。

最佳答案

尝试:

class Parent 
{
public:
virtual someFunc() { /* implementation A */ };
//^^^^^^^
};

虽然技术上不需要。
我总是觉得将派生函数也声明为虚函数是一种很好的风格:

class Child : public Parent 
{
public:
virtual someFunc() { /* implementation B */ };
};

与 Java 函数不同,默认情况下它不是虚函数。

关于c++ - 如何在多态中调用子对象的重载函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3927861/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com