解释虚函数、纯虚函数 ?
参考答案:
虚函数(Virtual Function)和纯虚函数(Pure Virtual Function)是C++中面向对象编程的重要概念,主要用于实现多态性(Polymorphism)。
虚函数(Virtual Function)
虚函数是一种特殊的成员函数,它在基类中被声明为虚函数,可以在派生类中被重写(Override)。当基类指针或引用指向派生类对象时,调用该虚函数将执行派生类中的实现,而不是基类中的实现,这就是动态绑定或运行时多态。
例如:
class Base {
public:
virtual void func() { cout << "Base function\n"; }
};
class Derived : public Base {
public:
void func() override { cout << "Derived function\n"; }
};
int main() {
Base* basePtr = new Derived();
basePtr->func(); // 输出 "Derived function"
delete basePtr;
return 0;
}
纯虚函数(Pure Virtual Function)
纯虚函数是一种特殊的虚函数,它在基类中没有实现(只有声明)。包含纯虚函数的类被称为抽象类,不能直接实例化。派生类必须提供该纯虚函数的实现,否则派生类也将成为抽象类。
例如:
class AbstractBase {
public:
virtual void func() = 0; // 纯虚函数
};
class Derived : public AbstractBase {
public:
void func() override { cout << "Derived function\n"; }
};
int main() {
// AbstractBase* abstractPtr = new AbstractBase(); // 错误,抽象类不能直接实例化
AbstractBase* abstractPtr = new Derived();
abstractPtr->func(); // 输出 "Derived function"
delete abstractPtr;
return 0;
}
纯虚函数的主要作用是定义接口,让派生类去实现这些接口。这样可以实现一种类似插件的机制,使得程序可以在运行时动态地加载和卸载不同的派生类实现。