多态
多态按字面的意思就是多种形态。当类之间存在层次结构,并且类之间是通过继承关联时,就会用到多态。
C++ 多态意味着调用成员函数时,会根据调用函数的对象的类型来执行不同的函数。
子类可以继承父类所有的成员变量和成员方法,但不继承父类的构造方法
因此,在创建子类对象时,为了初始化从父类继承来的数据成员,系统需要调用其父类的构造方法。
构建子类对象时一定会先调用父类的构造函数,子类默认调用父类的无参构造函数,当然也可以用初始化参数列表指定调用父类的构造函数
Rectangle( int a=0, int b=0):Shape(a, b) { }
1 #include <iostream> 2 using namespace std; 3 4 class Shape { 5 protected: 6 int width, height; 7 public: 8 Shape( int a=0, int b=0) 9 { 10 width = a; 11 height = b; 12 } 13 virtual int area() 14 { 15 cout << "Parent class area :" <<endl; 16 return 0; 17 } 18 }; 19 class Rectangle: public Shape{ 20 public: 21 Rectangle( int a=0, int b=0):Shape(a, b) { } 22 int area () 23 { 24 cout << "Rectangle class area :" <<endl; 25 return (width * height); 26 } 27 }; 28 class Triangle: public Shape{ 29 public: 30 Triangle( int a=0, int b=0):Shape(a, b) { } 31 int area () 32 { 33 cout << "Triangle class area :" <<endl; 34 return (width * height / 2); 35 } 36 }; 37 // 程序的主函数 38 int main( ) 39 { 40 Shape *shape; 41 Rectangle rec(10,7); 42 Triangle tri(10,5); 43 44 // 存储矩形的地址 45 shape = &rec; 46 // 调用矩形的求面积函数 area 47 shape->area(); 48 49 // 存储三角形的地址 50 shape = &tri; 51 // 调用三角形的求面积函数 area 52 shape->area(); 53 54 return 0; 55 }
(31条消息) 12 C++的多态_今天也要写bug、的博客-CSDN博客_多态