gpt4 book ai didi

c++:将指针传递给基类时访问派生类方法?

转载 作者:行者123 更新时间:2023-11-28 02:48:17 26 4
gpt4 key购买 nike

对于这个 nooby 问题,我深表歉意,但我刚刚开始使用面向对象的范式进行编程。

我有一个函数,它接受一个指向类 void foo(myClass* C) 的指针,并且这个类有它自己的方法

      class myClass{
public:
double fooMethod();
/* ... */
}

现在我想传递给 foo 一个带有重载方法的对象 fooMethod 所以我考虑创建一个派生类

      class myDerivedClass : public myClass{
public:
double fooMethod(); // overloaded method
/* ... */
}

问题是,如果我实例化一个对象 myDerivedClass* D = new myDerivedClass 并传递给它 foo(D),这个函数将使用基类的方法,即 myClass::fooMethod() 而我希望它使用 myDerivedClass::fooMethod()

我该如何做到这一点?我有这个问题,因为我不想重写已经工作的代码,比如 foomyClass,但我想使我的新功能适应当前结构的代码。

非常感谢!

最佳答案

你可以这样做

class myClass{
public:
virtual double fooMethod();
/* ... */
}

class myDerivedClass : public myClass{
public:
double fooMethod() override; // override method, not overload
/* ... */
}

然后如果你传递一个myDerivedClass对象指针/引用,并使用它来调用fooMethod()中的overriden方法>myDerivedClass 将被调用。

概念是你可以override基类方法,不是 overload .

关于c++:将指针传递给基类时访问派生类方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23649606/

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