为纯虚函数提供定义
2、为纯虚函数提供定义
1、合法:为纯虚函数提供实现是合法的,目的是为派生类提供默认逻辑。派生类可以选择重写或不重写这个函数。
2、提供保底行为:这种写法在需要提供保底行为的接口设计或减少重复代码的场景中可能非常有用。
struct A { virtual void fun() = 0; };
void A::fun() { cout << "test" << endl; }
虽然这种写法并不常见,但是在C++中是合法的,子类实例化后可以提供默认的行为,
#include <iostream>
using namespace std;
struct A {
virtual void fun() = 0; // 纯虚函数
};
void A::fun() {
cout << "Base implementation" << endl;
}
struct B : public A {
// 使用基类提供的实现
void fun() override { A::fun();}
};
int main() {
A* obj = new B(); // 创建派生类的实例
obj->fun(); // 调用基类的实现,输出:Base implementation
delete obj;
return 0;
}