虚函数
#include <iostream>
using namespace std;
class Vehicle //交通工具
{
public:void run() const{cout << "run a vehicle. " << endl;}
};
class Car : public Vehicle //汽车
{
public:void run() const{cout << "run a car. " << endl;}
};
class Airplane : public Vehicle //飞机
{
public:void run() const{cout << "run a airplane. " << endl;}
};
int main()
{cout << "(a) 直接用对象访问成员函数: " << endl;Vehicle v;Car car;Airplane airplane;v.run();car.run();airplane.run();cout << "(b)用指向基类的指针访问成员函数: " << endl;Vehicle* vp;vp = &car;vp->run();vp = &airplane;vp->run();return 0;
}
【运行结果】
纯虚函数
#include <bits/stdc++.h>
using namespace std;class Animal { //抽象类,类似java中的接口
public:virtual void makeSound() = 0; //纯虚函数定义=0
};class Cat : public Animal {
public:void makeSound() {cout << "Cat is meowing." << endl;}
};class Dog : public Animal {
public:void makeSound() {cout << "Dog is barking." << endl;}
};int main() {Animal* pAnimal1 = new Cat;Animal* pAnimal2 = new Dog;pAnimal1->makeSound(); // 输出 Cat is meowing.pAnimal2->makeSound(); // 输出 Dog is barking.delete pAnimal1;delete pAnimal2;return 0;
}
【运行结果】