最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C++?常量成員函數(shù)學(xué)習(xí)筆記

 更新時(shí)間:2023年10月26日 09:58:32   作者:Totn  
這篇文章主要為大家介紹了C++?常量成員函數(shù)學(xué)習(xí)筆記,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

C++ 成員函數(shù)

C++的類中, 在成員函數(shù)的函數(shù)聲明有末尾使用const 修飾, 則表明該函數(shù)為常量成員函數(shù).

它具有以下兩個(gè)特點(diǎn):

  • 常量性: 常量成員函數(shù)約定不會(huì)修改類的任何數(shù)據(jù)成員, 即在函數(shù)體內(nèi)不能修改類的任何非靜態(tài)變量和調(diào)用任何非常量成員函數(shù).
  • 對象調(diào)用: 常量成員函數(shù)可以被常量對象和非常量對象調(diào)用, 對于常量對象, 只能調(diào)用常量成員函數(shù);而對于非常量對象, 常量成員函數(shù)和非常量成員函數(shù)都可以調(diào)用.

(常量調(diào)常量, 非常隨便調(diào))

常量成員對象的定義

class Myclass {
public:
    void setName(const std::string& newName); // 非常量成員函數(shù)
    void print() const;                  // 常量成員函數(shù)
private: 
    std::string name;
};
void Myclass::setName(const std::string& newName) {
    name = newName;
}
// 常量成員函數(shù), 不會(huì)修改對象自己的數(shù)據(jù)
void Myclass::print() const {
    std::cout << "Myclass name: " << name << std::endl;
}
int main() {
    Myclass myc;
    myc::setName("Good");
    myc::print(); // output: "Myclass name: Good"
    const Myclass constMycls;
    // constMycls是常量對象, 所以不能調(diào)用setName
    constMyclass::print(); // output: "Myclass name: " name是空值
}

關(guān)于常量引用

在C++中,函數(shù)參數(shù)的類型可以分為傳值調(diào)用(by value)、引用調(diào)用(by reference)和常量引用調(diào)用(by const reference)三種方式。在以上代碼中,const std::string& newName是使用常量引用調(diào)用方式來傳遞參數(shù)。

使用const關(guān)鍵字修飾參數(shù)類型std::string&,表示這個(gè)引用參數(shù)是一個(gè)常量引用,即在函數(shù)內(nèi)部不允許修改傳入的參數(shù)。這樣設(shè)計(jì)的目的有以下幾點(diǎn)意義:

  • 避免不必要的拷貝:使用常量引用作為參數(shù),避免了對傳入的字符串對象進(jìn)行不必要的拷貝。如果不使用引用方式,而是直接使用std::string newName,則在函數(shù)調(diào)用時(shí)會(huì)進(jìn)行一次拷貝構(gòu)造,可能存在性能開銷和內(nèi)存消耗。
  • 支持傳遞常量和非常量對象:使用常量引用作為參數(shù),可以接受傳入的常量字符串(const std::string)和非常量字符串(std::string),提高了函數(shù)的通用性。
  • 保證不修改傳入的參數(shù):使用const關(guān)鍵字修飾參數(shù)類型,可以在函數(shù)內(nèi)部明確表明該函數(shù)不會(huì)修改傳入的參數(shù),提升了代碼的可讀性,并保護(hù)了傳入的字符串對象不會(huì)被意外修改。

總結(jié)

使用const std::string&作為參數(shù)類型,既可以避免不必要的拷貝開銷,又能夠支持傳遞常量和非常量對象,并且明確表示函數(shù)不會(huì)修改傳入的參數(shù)。這樣設(shè)計(jì)可以提高代碼的效率和可讀性。

以上就是C++ 常量成員函數(shù)學(xué)習(xí)筆記的詳細(xì)內(nèi)容,更多關(guān)于C++ 常量成員函數(shù)的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 簡要對比C語言中的dup()函數(shù)和dup2()函數(shù)

    簡要對比C語言中的dup()函數(shù)和dup2()函數(shù)

    這篇文章主要介紹了簡要對比C語言中的dup()函數(shù)和dup2()函數(shù),是C語言入門學(xué)習(xí)中的基礎(chǔ)知識,需要的朋友可以參考下
    2015-08-08
  • Opencv LBPH人臉識別算法詳解

    Opencv LBPH人臉識別算法詳解

    這篇文章主要為大家詳細(xì)介紹了Opencv LBPH人臉識別算法的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-05-05
  • C++ primer類的基礎(chǔ)精講

    C++ primer類的基礎(chǔ)精講

    C++類,是指系統(tǒng)在第一次在程序中遇到一個(gè)類時(shí)為這個(gè)類建立它的所有類變量的拷貝 - 這個(gè)類的所有實(shí)例共享它的類變量
    2022-07-07
  • c++關(guān)鍵字const的用法詳解

    c++關(guān)鍵字const的用法詳解

    在類中,如果你不希望某些數(shù)據(jù)被修改,可以使用const關(guān)鍵字加以限定。const 可以用來修飾成員變量、成員函數(shù)以及對象,希望能夠給你帶來幫助
    2021-09-09
  • QT樹的具體項(xiàng)目實(shí)現(xiàn)

    QT樹的具體項(xiàng)目實(shí)現(xiàn)

    本文主要介紹了QT樹的具體項(xiàng)目實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-06-06
  • C/C++?Qt?數(shù)據(jù)庫與TreeView組件綁定詳解

    C/C++?Qt?數(shù)據(jù)庫與TreeView組件綁定詳解

    本篇文章主要介紹了QT數(shù)據(jù)庫與View組件的綁定,通過數(shù)據(jù)庫與組件關(guān)聯(lián)可實(shí)現(xiàn)動(dòng)態(tài)展示數(shù)據(jù)庫中的表記錄。感興趣的小伙伴可以了解一下
    2021-12-12
  • 使用Matlab制作大富翁小游戲的過程詳解

    使用Matlab制作大富翁小游戲的過程詳解

    大富翁大家都玩過,走到建筑的位置可以買地,第二圈走到買過的地可以升級,別人經(jīng)過后需要付過路費(fèi),每次經(jīng)過起點(diǎn)都會(huì)獲得一定資金,玩到最后還沒破產(chǎn)的就是勝者,本文將制作一個(gè)Matlab版的大富翁小游戲,需要的可以參考一下
    2022-02-02
  • 最新評論

    承德县| 三穗县| 习水县| 天祝| 七台河市| 罗城| 曲阜市| 青铜峡市| 十堰市| 克拉玛依市| 兴城市| 祁阳县| 堆龙德庆县| 安岳县| 巫山县| 辛集市| 东乌珠穆沁旗| 澳门| 江源县| 临颍县| 平原县| 洪湖市| 大城县| 卢龙县| 安国市| 汝南县| 恩平市| 那曲县| 镇远县| 乃东县| 丽江市| 鄂州市| 阿拉善左旗| 扎兰屯市| 芮城县| 深水埗区| 晋宁县| 于都县| 通化市| 札达县| 武夷山市|