【发布时间】:2015-04-04 17:40:04
【问题描述】:
显然,内联定义是不允许的。
所以,我想知道这种使用二进制范围解析运算符在类定义之外定义纯虚函数的做法在哪些情况下有用?
我能想到的一个场景是假设所有派生类在纯虚函数定义中都有一些共同的代码/功能,并且共同的功能可以包含在纯虚函数本身的基类定义和基类版本中纯虚函数的定义可以在派生类的纯虚函数定义中调用。 (但不确定语法是否有效)。
【问题讨论】:
-
(对我而言)“不允许内联定义[纯虚函数]”并不是那么明显。关键字“inline”在任何地方都不会产生警告或错误(在 ubuntu 上使用 gcc 4.8.1)。所以也许我不确定你会把“内联”放在哪里来生成警告/错误?
-
@DOUGLASO.MOEN 我认为 OP 意味着在类中定义它(这使得它自动内联)。我同意使用
inline Foo::f()有效。虽然一般来说虚函数不应该是inline,因为编译器会在运行时决定运行哪一个。
标签: c++