在C++中,纯虚函数和虚函数都与面向对象编程中的多态性有关,但它们之间存在一些区别。
1、纯虚函数(Pure Virtual Function):
纯虚函数是在基类中声明的没有实际实现的虚函数。
通过将函数声明为纯虚函数,可以使基类成为抽象类,这意味着它不能直接实例化对象。
子类必须实现纯虚函数,否则子类也将成为抽象类。
声明纯虚函数的语法是在函数声明末尾加上 “= 0″:virtual void functionName() = 0;
示例:
class Base {
public:
virtual void pureVirtualFunction() = 0; // 纯虚函数
};
class Derived : public Base {
public:
void pureVirtualFunction() override {
// 子类必须实现纯虚函数
// 具体的实现代码
}
};
2、虚函数(Virtual Function):
虚函数是在基类中声明并使用关键字 “virtual” 的函数。
虚函数可以被子类重写(override),并且根据实际调用的对象类型动态地决定调用哪个函数实现。
基类指针或引用可以用于调用虚函数,实现运行时多态。
示例:
class Base {
public:
virtual void virtualFunction() {
// 基类的虚函数实现
}
};
class Derived : public Base {
public:
void virtualFunction() override {
// 子类重写了基类的虚函数
// 具体的实现代码
}
};
总结:
纯虚函数是没有实际实现的虚函数,用于定义接口和创建抽象类。
虚函数是在基类中声明并有默认实现的函数,可以被子类重写,并通过运行时多态性进行动态分派。