我试图确定如何在派生类中命名我的虚函数。
Base.h
class Base
{
public:
virtual void Virtual() = 0;
};
Derived.h
class Derived : public Base {
public:
void Virtual();
};
Derived.cpp
Derived::Virtual() // or Base::Virtual
{
cout << "Derived Virtual.\n";
}
我是否在实现文件中使用Derived :: Virtual或Base :: Virtual以及哪种方式存在问题?
答案 0 :(得分:1)
这取决于你想要达到的目标。
Derived::Virtual
将定义重写的函数,而Base::Virtual
将定义基类函数。两者都可以完成。你不能跳过定义前者,即Derived::Virtual
,因为它不是纯虚拟的,一旦它被定义它就被调用,那么它就会被锣是一个链接错误。
定义Base::Virtual
以提供一些常见行为,然后在不使用虚拟调度的情况下通过完全限定它来调用该函数是有意义的:
void Derived::Virtual() {
Base::Virtual();
std::cout << Derived::Virtual() < "\n";
}
请参阅C++ pure virtual function have body和Does it make any sense to define "pure" virtual functions in the base class itself?以供参考。