gpt4 book ai didi

C++ 继承,调用给定类函数而不是其父类?

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

标题真的不好,想不出怎么说,抱歉。

假设我有以下代码:

class A {
virtual int getSize() {
return 0;
}
}

class B : public A {
int getSize() {
return 32;
}
}

void doStuff(A a) {
std::cout << a.getSize() << std::endl;
}

int main() {
B b;
doStuff(b);
}

它会打印出 0,但我希望它打印出 32。换句话说,我想将类传递给它并打印出该类函数,因此我可以创建一个类 C,其中大小为 64,如果我将 C 实例传递给 doStuff 函数,我希望它打印 64。

有什么方法可以在 C++ 中执行此操作,我是否必须使用模板或一些我不知道的花哨的 C++ 功能?

最佳答案

一个字节的补丁:

void doStuff(A &a) {
std::cout << a.getSize() << std::endl;
}

您的版本按值获取参数,这意味着该函数复制了 b(一个 A 的拷贝),然后调用该拷贝的 getSize()。在此版本中,该函数通过引用获取参数,并调用 b 自己的 getSize(),即 B::getSize().

关于C++ 继承,调用给定类函数而不是其父类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30041498/

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