纯虚函数与虚函数的区别并且用C++代码来举例
时间: 2023-05-12 16:07:04 浏览: 115
纯虚函数和虚函数都是在C++中用于实现多态性的重要概念。虚函数是一个可以被子类重写的函数,而纯虚函数则是一个没有实现的虚函数,必须由子类实现。
下面是一个用C++代码举例说明纯虚函数和虚函数的区别:
```c++
#include <iostream>
using namespace std;
class Shape {
public:
// 纯虚函数
virtual void draw() = 0;
// 虚函数
virtual void print() {
cout << "This is a shape." << endl;
}
};
class Circle : public Shape {
public:
void draw() {
cout << "Drawing a circle." << endl;
}
void print() {
cout << "This is a circle." << endl;
}
};
int main() {
Shape* shape = new Circle();
shape->draw(); // 调用子类的实现
shape->print(); // 调用子类的实现
delete shape;
return 0;
}
```
在上面的代码中,Shape类是一个抽象类,它包含一个纯虚函数draw()和一个虚函数print()。Circle类是Shape类的子类,它实现了draw()函数并重写了print()函数。
在main()函数中,我们创建了一个指向Circle对象的Shape指针,然后调用了它的draw()和print()函数。由于draw()是一个纯虚函数,它必须由子类实现,因此调用的是Circle类的实现。而print()是一个虚函数,它被子类重写了,因此也调用了Circle类的实现。
总之,纯虚函数和虚函数都是用于实现多态性的重要概念,它们的区别在于纯虚函数必须由子类实现,而虚函数可以有默认实现。
阅读全文