C++远征之封装篇下

来源:互联网 发布:装配式结构优化 编辑:程序博客网 时间:2024/04/28 11:29

继C++远征之封装篇上 链接:http://blog.csdn.net/feng_8071/article/details/52650826
学而时习之,不亦说乎

对象+数据成员 对象成员
对象+数组 对象数组
深拷贝 VS 浅拷贝
this指针
const :常对象 常成员函数 常对象成员

一、对象数组
数组成员过大时,用对象数组比较方便,不要有内存泄漏

二、成员对象
这节讲的乱乱的
成员对象:当一个类的成员是另一个类的对象时,这个对象就叫成员对象。概括的说,就是一个类的成员是一个对象,即成员对象。
规则1、出现成员对象时,该类的构造函数要包含对成员的初始化。如果构造函数的成员初始化列表没有对成员对象初始化时,则使用成员对象的缺省构造函数。
2、建立一个类的对象时,应先调用其构造函数。但是如果这个类有成员对象,则要先执行成员对象自己所属类的构造函数,当全部成员对象都执行了自身类的构造函数后,再执行当前类的构造函数。
3、删除对象时,应先执行当前类的析构函数,然后再执行其成员对象的析构函数。与规则2相反。

三、深拷贝和浅拷贝
当类的对象需要拷贝时,拷贝构造函数将会被调用。以下情况都会调用拷贝构造函数:
(1)一个对象以值传递的方式传入函数体
(2)一个对象以值传递的方式从函数返回
(3)一个对象需要通过另外一个对象进行初始化。
深拷贝(值拷贝)和浅拷贝(位拷贝)可以简单理解为:如果一个类拥有资源,当这个类的对象发生复制过程的时候,资源重新分配,这个过程就是深拷贝,反之,没有重新分配资源,就是浅拷贝。浅拷贝单单拷贝地址,深拷贝除了数据进行拷贝,指向不同的地址

四、对象指针

class Point{public:    Point(int x,int y);    ~Point();private:    int m_IntX;    int m_IniY;};class Line{public:    Line(int x1,int y1,int x2,int y2);    ~Line();private:    Point *pos;    Point *pof;};Line::Line(int x1,int y1,int x2,int y2)//:pof(x1,y1),pos(x2,y2){    pof=new Point(x1,y1);    pos=new Point(x2,y2);    //pof(x1,y1);    //pos(x2,y2);    cout<<"Line()"<<endl;}

五、this指针
参数与成员数据一致时怎样呢?要让计算机识别出当前的值
this指针是指向自己,代表本身的地址
this是放在参数列表的哪个位置?为什么?

this指针的特点:
1、this存在成员函数,不能在全局函数和静态函数;
2、在成员函数开始前创建,在成员函数结束后清除;
3、this一般隐含与参数类型,不占用对象内存空间

0 0
原创粉丝点击