50 likes | 163 Views
第四章. 对象的使用课后学习. 向前引用. C++ 中类必须先定义,才能使用 两个类需要相互引用形成一个“环形”引用时,无法先定义使用。 在使用向前引用时,不能在有相互依存关系的类中声明具体的对象,只能声明为指针或引用或是某个函数的形参。. class child; // 前向引用 class parent{ child *c; }; class child{ parent *p };. 子对象 3-1. C++ 有两个基本的方式可以实现重用代码:继承和组合。 组合:是指将一个类的对象作为另一个类的成员,该对象就被称为子对象。
E N D
第四章 对象的使用课后学习
向前引用 • C++中类必须先定义,才能使用 • 两个类需要相互引用形成一个“环形”引用时,无法先定义使用。 • 在使用向前引用时,不能在有相互依存关系的类中声明具体的对象,只能声明为指针或引用或是某个函数的形参。 class child; //前向引用 class parent{ child *c; }; class child{ parent *p };
子对象3-1 • C++有两个基本的方式可以实现重用代码:继承和组合。 • 组合:是指将一个类的对象作为另一个类的成员,该对象就被称为子对象。 • 在一个类中出现了子对象时,该类的构造函数就要考虑子对象的初始化问题。 • 在C++中,通常采用成员初始化列表的方法来初始化子对象,效率较高。
子对象3-2 #include "iostream.h" class point{ public: point(float i,float j) {x=i;y=j;} void print() { cout<<"This is a point."<<endl; cout<<"x="<<x<<"y="<<y<<endl; } float retX() {return x;} float retY() {return y;} private: float x,y; };
子对象3-3 class circle{ public: circle(float i,float j,float k):center(i,j),radius(k){} void print(){ cout<<"This is a circle"<<endl; cout<<"Its center is x="<<center.retX()<< " y="<<center.retY()<<endl; cout<<"radius="<<radius<<endl; } private: point center; //子对象 float radius; }; void main(){ circle spot(6,7,8); spot.print(); }