国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C++ > 正文

C++之指針(對象指針+對象成員指針+this指針[待補充])

2019-11-06 08:05:15
字體:
來源:轉載
供稿:網友

對象指針 對象指針就是指針指向一個對象。

class Coordinate//坐標系上的點{public: int m_iX; int m_iY;};Coordinate *p = new Coordinate;//在堆中實例化

在實例化時,p的指針實際指向的是m_iX,在實例化對象時,下列代碼中的注釋部分也是符合語法的。

int main(){ Coordinate *p = new Coordinate;//在堆中實例化 p->m_iX = 10;//(*p).m_iX=10; p->m_iY = 20;//(*p).m_iY=20; delete p; p = NULL; return 0;}

對象成員指針 對象成員是指作為一個對象來說成為另一個類的數據成員。那么對象成員指針則是對象的指針作為另一個類的數據成員。 代碼1

class Coordinate//坐標系上的點{public: Coordinate(int x, int y);PRivate: int m_iX; int m_iY;};class Line//坐標系上的線{public: Line(); ~Line();private: Coordinate *m_pCoorA; Coordinate *m_pCoorB;};

在構造函數時,可以初始化列表構造,也可以普通構造,因為是指針,所以可以置位NULL 代碼2

Line::Line() :m_pCoorA(NULL), m_pCoorB(NULL)//初始化列表初始{}Line::Line()//普通初始化{ m_pCoorA=NULL; m_pCoorB=NULL;}

當然更多是賦予指針值 代碼3

Line::Line()//普通初始化{ m_pCoorA=new Coordinate(1,3); m_pCoorB=new Coordinate(5,6);}Line::~Line(){ delete m_pCoorA; delete m_pCoorB;}

當然對于對象成員和對象成員指針,他們還有另外一個最大的不同 用對于對象成員來說,如果我們使用sizeof(line)這個對象的話,他就應該是里面所有對象的體積的總和應該是16,而對象成員指針則不同,在代碼1中我們寫了兩個指針作為對象成員,在32位上,每個指針占4位,兩個指針則占8個。下面我們來看一看內存中的對象成員指針。 當示例化line時,里面的兩個對象成員指針也會生成出來,都是指針類型的,所以每個都會占4個內存單元,如果我們在構造函數當中通過new這樣的運算符從堆中申請內存,實例化兩個Coordinate這樣的對象的話呢,這兩個Coordinate對象都是在堆中的,而不再line這個對象當中,所以剛才我們使用sizeof的時候也只能得到8 這里寫圖片描述

當我們銷毀line這個對象的時候呢,我們也應該先釋放掉堆中的內存,然后再釋放掉line這個對象。

this指針 一般來說類函數的傳遞參數和成員不重名,如下所示

class Array{public: Array(int _len){ len = _len; } int getLen(){ return len; } void setLen(int _len){ len = _len; }private: int len;};

那么如果重名的話會發生什么?如下代碼,編譯器會報錯,因為無法分辨哪個是作為參數的Len

class Array{public: Array(int len){ len = len; } int getLen(){ return len; } void setLen(int len){ len = len; }private: int len;};

因此我們需要一種技術來標注出參數或者標記出數據成員。這就是this指針。


上一篇:順序表-----C++實現

下一篇:函數重載 c++

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 怀仁县| 博爱县| 娄烦县| 平乐县| 葫芦岛市| 扎赉特旗| 徐闻县| 成武县| 宁阳县| 滨州市| 青铜峡市| 泽州县| 白玉县| 耿马| 吉林省| 南靖县| 云浮市| 郑州市| 柏乡县| 莎车县| 泗阳县| 泸州市| 泰顺县| 承德市| 岳池县| 邢台市| 合肥市| 阳东县| 双流县| 秦安县| 抚远县| 黄浦区| 汽车| 德江县| 遂宁市| 泰兴市| 禹州市| 高要市| 新津县| 涿鹿县| 兴海县|