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

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

C++的常量成員函數

2019-11-08 19:53:26
字體:
來源:轉載
供稿:網友

在C++中,若類的成員函數的形參列表之后緊跟著const關鍵字,則該成員函數為常量成員函數。如下:

struct Sales_data{	//數據成員	std::string bookNo;	unsigned uints_sold = 0;	double revenue = 0.0;	//成員函數	std::string isbn() const { return bookNo; } //常量成員函數	Sales_data& combin(const Sales_data&);};當我們調用類的成員函數時,實際上是調用具體的某個對象的成員函數。成員函數是通過一個名為this的額外的隱式形參來調用它的那個對象。即當我們調用某個對象的成員函數時,會將this指針和該對象進行綁定。

在成員函數內部,我們可以直接使用,并且能夠正確的使用調用該函數的對象的成員,而不用通過成員運算符來具體指定某個對象,就是因為this所指的正是這個對象。因為this的目的總是指向“這個”對象,故this是一個常量指針,不允許改變this保存的地址(它保存的地址正是“這個”對象的地址)。

成員函數中,形參列表后面的const關鍵字,作用是修改隱式this指針的類型。前面說this指針是常量指針,其保存的地址不能改變,即只能指向“這個”對象。但是如果該對象被聲明為常量對象,此時雖然this指針始終指向該常量對象,但是this卻并不是一個指向常量的指針,它只是一個常量指針。換句話說,允許通過this指針來改變這個常量對象,豈不是有問題了?

這就意味著,我們不能調用一個常量對象的普通函數。因為這意味著將普通函數的隱式this常量指針,跟一個常量對象進行綁定。關鍵字const的作用就是將this指針由常量指針改為指向常量對象的常量指針。如此,可以被常量對象所調用。

由上面分析可以知道:

(1)常量成員函數形參列表后的const關鍵字,意味著this指針指向常量。

(2)常量成員函數不會改變調用它的對象(因為this指針已經被改為指向常量的指針)

(3)非常量對象可以調用常量成員函數,常量對象只能調用常量成員函數不能調用普通成員函數(即使該普通成員函數不改變調用它的對象)。

參考:《C++ PRimer》 第五版


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

圖片精選

主站蜘蛛池模板: 靖宇县| 莱阳市| 宁强县| 白城市| 芦溪县| 天镇县| 太仆寺旗| 二连浩特市| 永昌县| 鄱阳县| 临泽县| 香港 | 天等县| 岗巴县| 襄城县| 论坛| 石阡县| 永昌县| 渝北区| 和硕县| 临桂县| 灵璧县| 西贡区| 吉木乃县| 永仁县| 察哈| 米泉市| 通榆县| 教育| 金坛市| 郁南县| 新乡县| 大冶市| 卓尼县| 繁峙县| 蓝田县| 北宁市| 浙江省| 保康县| 咸阳市| 高平市|