C ++内联几乎继承的函数

时间:2013-10-22 20:07:05

标签: c++ inheritance virtual inline

好的,这更像是一个澄清C ++功能如何工作的请求而不是答案。我将首先解释我遇到的问题,因为直接的答案是它不是一个非常好的课堂设计。

我有一个课程正在形成一个不可维护的if语句;当我试图将它变成一个复合体时,我开始对使用深层拷贝工作比使用原始blob更困惑,以及一般的小对象分配问题。所以我开始寻找一种方法将blob拆分成几个类,编译器可以将它们转换回原始的blob。

在下面的代码中,我知道super::get_x()foo_b中的foo_c是可以接受的 - 来自其他堆栈溢出问题 - 但我不确定{{1}在super::get_z()中是。最后foo_cf.get_x()f.get_y()的来电是虚拟函数调用,因为它不是明确的,并且它不知道是否{{ 1}}是否具有子类,或者它们是否可以因为它实际上不具有?

f.get_z()

1 个答案:

答案 0 :(得分:0)

查看C++ FAQ

  

因此,内联虚拟调用唯一可以内联的是编译器知道作为虚函数调用目标的对象的“确切类”。只有当编译器具有实际对象而不是指针或对象的引用时,才会发生这种情况。即,使用本地对象,全局/静态对象或复合内部的完全包含的对象。