C++学习笔记_8:类的组合
2013-05-21 10:20
176 查看
//组合的概念:类中的成员数据是另一个类的对象。 //可以在已有的抽象的基础上实现更复杂的抽象。 //通过对复杂对象进行分解、抽象,使我们能够将一个复杂对象理解为简单对象的组合。 //分解得到复杂对象的部件对象,这些部件对象比它高层的复杂对象更容易理解和实现。然后由这些部件对象来"装配"复杂对象。 //类组合的构造函数设计: //原则:不仅要负责对本类中的基本类型成员数据赋初值,也要对对象成员初始化。 //声明形式: //类名::类名(对象成员所需的形参,本类成员形参):对象1(参数),对象2(参数),...... //{ 本类初始化 } //构造函数调用顺序: //1.先调用内嵌对象的构造函数(按内嵌时的声明顺序,先声明者先构造)。然后调用本类的构造函数。(析构函数的调用顺序相反) //2.若调用缺省构造函数(即无形参的),则内嵌对象的初始化也将调用相应的缺省构造函数。 #include<iostream.h> #include<math.h> class Point { private: float x,y; //点的坐标 public: Point(float xx,float yy) { cout<<"point构造函数"<<endl; x = xx; y = yy; } Point(Point &p) { x = p.x; y = p.y; cout<<"point 拷贝构造函数"<<endl; } float GetX(void){return x;} float GetY(void){return y;} }; class Distance { private: Point p1,p2; //线段的两个端点 double dist; double price; public: Distance(Point a,Point b,double p); //构造函数 double GetDis(void){return dist;}; }; Distance:: Distance(Point a,Point b ,double p=30):p1(a),p2(b) //组合类构造函数 { cout<<" Distance构造函数"<<endl; double x=double(p1.GetX()-p2.GetX()); double y=double(p1.GetY()-p2.GetY()); dist=sqrt(x*x+y*y); price=p; } int main() { Point myp1(1,1), myp2(4,5); Distance myd(myp1,myp2); cout<<"the distance is :"; cout<<myd.GetDis()<<endl; return 0; }
相关文章推荐
- C++学习笔记——map与set的组合使用
- 【C++】学习笔记十二——类型组合
- 【C++学习笔记】类型组合
- C++学习笔记:3.3.4 继承和组合混搭情况下,构造和析构调用顺序
- C++学习笔记――继承和组合
- 【C++】【学习笔记】【未成功实现】关于指针的函数【very difficult】
- C++内存管理学习笔记(5)
- C++学习笔记:转换构造函数与类型转换函数
- C++继承与派生学习笔记
- c++ 学习笔记(高级linux编程) day2
- c++学习笔记(4.c++中新的关键字)
- C++学习笔记之三——面向对象的编程
- 【菜鸟C++学习笔记】24. 常见的引用注意问题
- Effective C++ 学习笔记14
- C++学习笔记(六):关于ifdef 和ifndef的使用
- 设计模式C++学习笔记之十五(Composite组合模式)
- C++学习笔记->指针与引用
- C++学习笔记4:面向对象的基础之类与对象
- C++ STL学习笔记3--deque
- 设计模式C++学习笔记之七(AbstractFactory抽象工厂模式)