gpt4 book ai didi

c++ - 从基类调用继承类的重载函数

转载 作者:行者123 更新时间:2023-11-30 01:55:59 25 4
gpt4 key购买 nike

#include<iostream>

class A {
public:
void init(){
std::cout << "A" << std::endl;
}
};
class B: public A {
public:
void init(){
std::cout << "B" << std::endl;
}
};
int main() {
A *o = new B();

/*

Some codes here

*/
o->init();
return 0;
}

结果:
一个

在上面的程序中,调用的是A类的init函数,如何调用B类的init函数呢?

编辑:我需要调用两个 init。我无法更改 A 和 B 类。而且我必须像在 main 中那样进行对象声明。

最佳答案

A 类 中使 init() 函数成为虚函数。

class A {
public:
virtual void init(){
std::cout << "A" << std::endl;
}
};

对象o 有两部分。 基础部分派生部分。如果你想从 o 调用 B::init(),那么你必须告诉编译器它是一个虚函数,它应该寻找这个函数在派生类中重载。

我建议您阅读本网站上的教程以了解有关继承的更多信息: http://www.learncpp.com/cpp-tutorial/113-order-of-construction-of-derived-classes/

关于c++ - 从基类调用继承类的重载函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20186009/

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