虚函数
#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;
}
【运行结果】