日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

常函数及其由来

發布時間:2024/4/18 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 常函数及其由来 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1. this鋪墊

首先,我們先要了解在c++中的面向對象編程中,當我們調用成員函數時,實際上實在替某個對象調用它。若果mem_function指向對象中的某個成員,則它隱式地指向調用該函數的對象的成員。

成員函數通過名為this的額外的隱式參數來訪問調用它的那個對象。當我們調用一個成員函數時,用請求該函數的對象地址初始化this。編譯器負責把對象的地址傳遞給成員函數的隱式參數this,可以等價地認為編譯器將該調用重寫成了如下形式:

Class name::mem_funtcion(&object name)

??? 1

其中,調用該函數時傳入了對象的地址。

在成員函數內部,可以直接調用函數的對象的成員,而無須通過成員訪問運算符來做到這一點,因為this所指的正是這個對象。任何對類成員的直接訪問都被看作this的隱式引用。比如:當使用Person類的對象p.get_name()函數返回姓名時,return name實際上做的是return this->name。

需要注意的是,this總是指向“這個”對象,所以this是一個常量指針,不允許改變this中所保存的地址。

2. 引入const函數

接下來,我們看看是如何引入const成員函數的。
const函數的函數列表后會出現const關鍵字,其作用是修改隱式this指針的類型。
默認情況下,this的類型是指向類類型不是常量的常量指針,相當于int * const p,即p指向的對象不是常量,但是p中保存的地址是常量,在這里,就是this所指向的對象不是常量,this中的地址是常量。因此,this所遵循的初始化規則使得我們不能將this綁定到一個常量對象上,即我們不能在一個常量對象上調用普通成員函數,因為此時在一個常量對象上調用普通函數時,傳入的this指向非常量,即說明要將一個常量對象付給一個非常量指針,這是違反規則常量使用規則的。

為了能夠讓常對象能夠使用對象中的函數,就需要設計一些特殊的函數供常對象使用,此時,常函數應運而生。通過將成員函數的參數列表之后加上const關鍵字,使得被隱式傳入的this所指向的對象為常對象,即使得this的類類型為常量指針,一邊能夠指向常對象。作用相當于:

String Class_name:: mem_function(const class_name *const this)

??? 1

雖然不允許顯示定義自己的this指針,但是這樣的偽代碼有助于理解隱式的this指針是如何使用的。
以上所定義的函數就為常函數。
————————————————
版權聲明:本文為CSDN博主「塔樓」的原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/qq_28915885/article/details/79054374

總結

以上是生活随笔為你收集整理的常函数及其由来的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。