C++避免使用 using 关键字在派生类中进行动态调度
C++ avoiding dynamic dispatch in derived classes with using keyword
在下面的示例中,我会使用动态调度来调用虚函数吗?
struct Base{
virtual double fn(){return 3.2;}
};
struct Deri1 : public Base{
using Base::fn;
}
struct Deri2 : public Base{
virtual double fn(){return 4.6;}
}
我正在实现的类包含更多信息,但有些我想为某些派生类保留默认值,但在其他派生类中覆盖,上面代码中的 fn() 就是一个例子。基本上,我只是使用基类来避免每次未被覆盖时重写 fn()。这是正确的方法吗?
谢谢!
只要不使用
指针,就可以通过在函数定义中避免使用"virtual"关键字来避免动态调度,如本链接中所述。
这给通用方法和多态性带来了一些复杂性。如果使用动态多态性,则将指向基类的指针传递给方法,在这种情况下,"virtual"关键字对于指针确定要使用的方法是必需的。可以使用模板定义静态多态方法,如以下链接中所述。
相关文章:
- 动态调度到模板函数C++
- openMp 动态调度与按处理时间排序任务时的 LPT 调度相同吗?
- 是否会动态调度在具有 vtable 的类上调用非虚函数
- 带有模板类和动态调度的C 共享_POINTER
- 我如何处理成员的所有派生动态内存
- C++或D:在没有动态调度的情况下解耦类的习惯用法
- C++动态调度和后期绑定有什么区别
- 动态调度是如何在程序集中发生的
- 为什么动态调度比 openmp 中的静态调度更快
- 动态调度在类外部声明的方法
- C++避免使用 using 关键字在派生类中进行动态调度
- OpenMP:循环'std::map'基准测试(动态调度)
- C++中动态调度的规则是什么?
- 为什么只有多态类才允许基于派生动态铸造
- O'Reilly "Objective-C Pocket Reference"声称C++不支持动态调度,这是真的吗?
- 动态调度方法
- 针对不相关类型的动态调度的解决方案
- 模板函数的动态调度
- 动态调度哪些函数
- 新的运算符+OpenMP动态调度子句