gpt4 book ai didi

C++继承,从基类调用派生函数

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:54:21 30 4
gpt4 key购买 nike

如何从基类调用派生函数?我的意思是,能够将一个函数从基类替换为派生类。

例如

class a
{
public:
void f1();
void f2();
};

void a::f1()
{
this->f2();
}

/* here goes the a::f2() definition, etc */

class b : public a
{
public:
void f2();
};

/* here goes the b::f2() definition, etc */

void lala(int s)
{
a *o; // I want this to be class 'a' in this specific example
switch(s)
{
case 0: // type b
o = new b();
break;
case 1: // type c
o = new c(); // y'a know, ...
break;
}

o->f1(); // I want this f1 to call f2 on the derived class
}

也许我采取了错误的方法。任何关于不同设计的评论也将不胜感激。

最佳答案

在基类中声明 f2() 为虚函数。

class a
{
public:
void f1();
virtual void f2();
};

然后,每当派生类覆盖 f2() 时,将根据指针指向的实际对象的类型而不是指针的类型来调用最派生类的版本。

关于C++继承,从基类调用派生函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2116782/

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