1 // 2 // main.cpp 3 // Test.cpp 4 // 5 // Created by mac on 15/8/11. 6 // Copyright (c) 2015年. All rights reserved. 7 // 8 #include9 #include 10 using namespace std;11 class Person //基类Person12 {13 private:14 string name;15 int age;16 public:17 Person();18 virtual ~Person();//虚析构函数19 Person(string name,int age);20 void setname(string name);21 void setage(int age);22 virtual void show();//虚成员函数,子类继承后必须要重写该函数23 //virtual void show()=0;//纯虚函数,此时该类就不能创建对象了。24 };25 Person::Person(){};26 Person::Person(string name,int age)27 {28 this->name = name;29 this->age = age;30 }31 void Person::setname(string name)32 {33 this->name = name;34 }35 void Person::setage(int age)36 {37 this->age = age;38 }39 void Person::show()40 {41 cout<<"name:"< <<","<<"age:"< < score = score;62 this->subject = subject;63 }64 void Student::show()65 {66 Person::show();67 cout<<"score:"< <<","<<"subject:"< < show();89 90 return 0;91 }
程序运行结果:
name:xiayuanquan,age:23name:lisi,age:23score:98.5,subject:Englishname:chenglong,age:60score:99,subject:chinesename:zhangsan,age:20score:100,subject:mathProgram ended with exit code: 0
总结:实现多态的三个条件:
1.存在继承关系
2.多态的第一种,父类的引用指向子类对象 或者 多态的第二种,父类的指针指向子类对象。
3.子类必须要重写父类的同名方法