c++ - 是否有可能在 C++03 中实现类似 'override' 的功能

标签 c++ polymorphism overriding virtual-functions c++03

C++11 中,我们有 override 说明符,它允许在编译时验证虚函数实际上覆盖了基类中接口(interface)的行为。

C++03 中是否有相同的行为?

最佳答案

检查函数 foo 是否存在于基类 Foo 说,写

sizeof(&Foo::foo);

foo 的子类版本中。这个想法是,如果基类 Foo::foo 不存在,编译将失败,如果存在,则会产生良性影响。

当然,这有缺点 - 例如,您不能通过重载来区分。此外,具有相似名称的 static 函数和成员变量也将匹配。

关于c++ - 是否有可能在 C++03 中实现类似 'override' 的功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58414928/

相关文章:

c++ - 在对其进行线程操作后保存 GDI+ 位图

java - 当基本对象列表时,GSON 不包括鉴别器字段

java - 静态字段覆盖在 Java 7 中工作得很好

Scala:是否可以在子类的构造函数中覆盖 val?

c++ - 遗留项目中的重复代码删除策略

php - 覆盖文件夹功能和冲突?

c# - GUI 应用程序中的 Tcl channel

c++ - 如何从 C++ 使用 Keras SavedModel

c++ - Visual Studio Code 智能感知,使用 g++ 预定义的宏

c++ - 具有非类型模板参数的多态性