rectangle类成员 Rectangle: Rectangle( (int avalue, int balu函数的定义 asavalue: b=bvalue: ∥ Rectangle类构造函数 double Rectangle: getArea( const cout<<" Rectangle类的 getArea函数,面积是"; return a* b: ∥ Rectangle类 getArea函数定义 void Rectangle: print( const cout<<" hight is"<≤a; cout<< width is <<b<<end ∥ Rectangle类prnt函数定义 2021/2/24 16
2021/2/24 -16- Rectangle::Rectangle(int aValue, int bValue ) { a=aValue; b=bValue; } // Rectangle类构造函数 double Rectangle::getArea() const { cout<<"Rectangle类的getArea函数,面积是"; return a * b; } // Rectangle类getArea函数定义 void Rectangle::print() const { cout << "hight is "<<a; cout<<"width is"<<b<<endl; } // Rectangle类print函数定义 Rectangle类成员 函数的定义
例111主函数 ∥例111:111.cpp 调用的是号时类 include <iostream> 数 58.4845 using std: cout; 是 Ractangle类的 using std: :end: getarea函数,面积是100 iNclude"shape. h ∥包含头文件 void maino Circle circle( 22, 8, 3.5; ∥创建 Circle类对象 Rectangle rectangle(10,10);∥创建 Rectangle类对象 cout<<"调用的是"; cout<< circle. getArea(<<endl;∥静态联编 cout<<"调用的是"; cout<< rectangle. getArea()<<endl;∥静态联编 ∥结束man函数 2021/2/24 17
2021/2/24 -17- // 例11.1: 11_1.cpp #include <iostream> using std::cout; using std::endl; #include "shape.h" // 包含头文件 void main() { Circle circle( 22, 8, 3.5 ); // 创建Circle类对象 Rectangle rectangle( 10, 10 ); // 创建Rectangle类对象 cout << "调用的是 "; cout<<circle.getArea() << endl; // 静态联编 cout << "调用的是"; cout<<rectangle.getArea() << endl; // 静态联编 } // 结束main函数 例11.1的主函数 调用的是Circle类的getarea函 数,面积是38.4845 调用的是Ractangle类的 getarea函数,面积是100
1121派生类对象调用同名函数 ◆对于派生类对象调用成员函数,可以有以下的 结论: ◆派生类对象可以直接调用本类中与基类成员函 数同名的函数,不存在二义性; ◆在编译时就能确定对象将调用唧个函数,属于 静态联编,不属于运行时的多态。 2021/2/24
2021/2/24 -18- 11.2.1派生类对象调用同名函数 对于派生类对象调用成员函数,可以有以下的 结论: 派生类对象可以直接调用本类中与基类成员函 数同名的函数,不存在二义性; 在编译时就能确定对象将调用哪个函数,属于 静态联编,不属于运行时的多态
1122通过基类指针调用同名函数 ◆从继承的角度来看,派生类对象是基类对象的 个具体的特例。或者说,派生类对象是某 种特定类型的基类对象。 例如, Circle类是 Shape类的公有继承,“圆”是 “图形”的一种特例。或者说,圆是一种特定的图 形,具有图形的基本特征。 是油生测对时将的,在卖对该想 派生类对象的一个特例。 2021/2/24
2021/2/24 -19- 11.2.2通过基类指针调用同名函数 从继承的角度来看,派生类对象是基类对象的 一个具体的特例。或者说,派生类对象是某一 种特定类型的基类对象。 ◼ 例如,Circle类是Shape类的公有继承,“圆”是 “图形”的一种特例。或者说,圆是一种特定的图 形,具有图形的基本特征。 但是,这种关系不是可逆的。不可以说基类的 对象具有派生类对象的特征,基类对象也不是 派生类对象的一个特例
1122通过基类指针调用同名函数 ◆在关于基类对象和派生类对象的操作上,可以 允许以下的操作: 派生类对象可以赋值给基类对象; 派生类对象的地址可以赋值给基类对象的指针。或 者说,可以用派生类对象的地址初始化基类对象的 指针; 可以将基类对象的引用,定义为派生类对象的别名, 或者说,用派生类对象初始化基类的引用。 通过派对象的地址初始化的持类对象的据针白 函数同名的函数。 2021/2/24
2021/2/24 -20- 11.2.2通过基类指针调用同名函数 在关于基类对象和派生类对象的操作上,可以 允许以下的操作: ◼ 派生类对象可以赋值给基类对象; ◼ 派生类对象的地址可以赋值给基类对象的指针。或 者说,可以用派生类对象的地址初始化基类对象的 指针; ◼ 可以将基类对象的引用,定义为派生类对象的别名, 或者说,用派生类对象初始化基类的引用。 ◼ 通过派生类对象的地址初始化的基类对象的指针, 可以访问基类的公有成员,也可以访问和基类成员 函数同名的函数