class employee {
public:voidsalary(){}};
class manager : public employee {
public:voidsalary(){}};
class programmer : public employee {
public:voidsalary(){}};voidpayroll(employee& re){
re.salary();};
#include<iostream>
using namespace std;
class Base {
public:
virtual voidf(){ cout<<"Base::f()"<<endl;}};
class Derived1 : public Base {
public:voidf(){ cout<<"Derived1::f()"<<endl;}};
class Derived2 : public Base {
public:voidf(){ cout<<"Derived2::f()"<<endl;}};intmain(){
Base b; Derived1 d1; Derived2 d2;
b.f();//Base::f()
d1.f();//Derived1::f()
d2.f();//Derived2::f()
b = d1;
b.f();//对象调用,没有多态性,Base::f()
Base *pb =&b;
pb ->f();//Base::f()
pb =&d1; pb ->f();//Derived1::f()
pb =&d2; pb ->f();//Derived2::f()}
class shape {
public:
virtual doublearea()const{return0;}};
class rectangle : public shape {
public:doublearea()const{return height*width;}
private:double height,width;};
class circle : public shape {
public:doublearea()const{return PI*r*r;}
private:double r;};intmain(){...
shape* p[N];double total_area =0;...for(int i =0; i < N; i++)
total_area += p[i]->area();...};