我有一个虚拟的C++方法,我在.h文件中定义并在.cc文件中实现.是否应将.cc文件中的实现标记为虚拟,或仅标记为.h文件中的声明?例如,我的标题有:
virtual std::string toString() const;
Run Code Online (Sandbox Code Playgroud)
该方法在我的.cc中实现:
std::string
MyObject::toString() const {
[implementation code]
}
Run Code Online (Sandbox Code Playgroud)
应该将实现标记为虚拟,还是上面的代码可以正常?有关系吗?
4pi*_*ie0 18
C++标准n3337 § 7.1.2/5说:
虚拟说明符只能用于非静态类成员函数的初始声明;
virtual当您声明(或定义)方法时,关键字只能在类定义中使用.所以...它可以在实现文件中使用但是如果它仍然在类定义中.
例:
class A {
public:
virtual void f();
};
virtual void A::f() {} // error: ‘virtual’ outside class declaration
// virtual void A::f() {}
int main() {
// your code goes here
return 0;
}
Run Code Online (Sandbox Code Playgroud)