C++:从父实例化调用子方法
C++ : Calling a child method from parent instantiation
在我的代码中,我实现了这些类:
class A
{
public:
virtual int fun() { return 0; }
}
class B : public A
{
public:
virtual int fun() { return 1; }
}
而这些功能:
void operation(A a)
{
printf("%dn",a.fun());
}
int main()
{
B b;
operation(b);
return 0;
}
如您所见,类 B 继承了 A,并实现了虚拟继承方法 fun()
。主类调用一个函数,该函数在参数中接受 A,并在参数中调用 fun()
方法,参数中有一个 B 对象。
在执行时,我希望打印字符串"1"
,但它是"0"
(即使它是传递给operation()
的 B 对象)。
我需要这样做,因为我有几个 B 类(B1、B2 等),我希望函数operation()
是泛型的。我不需要在 A 类中实现 operation()
,但是如果我声明operation()
纯虚拟,编译失败operation()
说我无法实例化 A(这是意料之中的)。
我发现很多话题都在谈论父/子方法调用和继承,但没有一个确切地谈到这个问题。
有人可以帮助我吗?
谢谢。
您需要通过引用传递对象或传递指针
void operation(A& a)
由于您是按值传递的,因此派生对象将被切片 - 在函数范围内创建一个类型为 A
的新对象。
相关文章:
- 将方法转换为调用该方法的成员函子对象会导致崩溃
- 有没有办法从同一类中的函子调用类方法?
- C++ 在不知道子类型的情况下从父类型调用子方法
- C++继承,如何在基类的方法中调用子类的方法?
- 从父方法调用子方法
- 如何将子方法调用到父方法
- 基类中的虚拟方法和子类中的非 Virtula 方法.仍然如何调用子类方法,即使它是非虚拟的
- C ,基础课程如何将子类作为成员包含并调用其方法
- 继承和重写 - 从基类调用重写子方法
- 调用子类方法会导致分段错误
- C++:从父实例化调用子方法
- 在C++中,如何从父类变量的子类调用重载方法
- 继承基类,定义基类的原型方法,但从第三个对象调用子类的方法
- 正在调用子方法
- C++类继承从基类型调用子方法
- C++从父引用调用子方法
- 如何从父指针调用子方法
- 从没有虚拟或引用的基方法调用子方法
- 父对象调用子方法C++
- c++中从父析构函数调用子方法