91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C++ 常函數

發布時間:2020-06-11 22:34:57 來源:網絡 閱讀:1067 作者:Aonaufly 欄目:編程語言

常函數的意義對與普通函數來說,因為const關鍵字的增加,體現在對類成員的保護上,現在加以講解:C++ 常函數

#include <iostream>
using namespace std;
class Ctest
{
private:
        int a;
public:
    Ctest( int a  = 2)
    {
        this->a = a;
    }
    int doubleA() const
    {
        return  a*2;
    }
};
int main()
{
    Ctest * cts = new Ctest(2);
    cout << cts->doubleA() << endl;
    delete cts;
    return 0;
}

結果:

C++ 常函數


常函數->

int doubleA() const    就是在函數后加const

需要注意的是 :

①:構造函數和析構函數不可以是常函數

②:常函數不能對class的類成員進行修改(只能調用)如下面是不可以的:

C++ 常函數

但是可以對本函數內部聲明的參數進行修改

③:常函數的this指針,有別于普通函數的this指針

#include <iostream>
using namespace std;
class Ctest
{
private:
        int a;
public:
    Ctest( int a  = 2)
    {
        this->a = a;
    }
    int doubleA() const
    {
        return  a*2;
    }
    const Ctest* my() const
    {
        return this;
    }
    Ctest* my1()
    {
        return this;
    }
};
int main()
{
    /*Ctest * cts = new Ctest(2);
    cout << cts->doubleA() << endl;
    delete cts;*/
    Ctest cts(3);
    cout << cts.my()->doubleA() << endl;
    return 0;
}

這里有個注意點:常對象只能調用常對象,如下面是不允許的:

C++ 常函數


另外 :

#include <iostream>
using namespace std;
class Ctest
{
private:
        int a;
public:
    Ctest( int a  = 2)
    {
        this->a = a;
    }
    int doubleB()
    {
        return  a*2;
    }
    int doubleA() const
    {
        return  a*2;
    }
    const Ctest* my() const
    {
        return this;
    }
    Ctest* my1()
    {
        return this;
    }
};
int main()
{
    /*Ctest * cts = new Ctest(2);
    cout << cts->doubleA() << endl;
    delete cts;*/
    const Ctest cts(3);
    cout << cts.doubleA() << endl;
    return 0;
}

用 const Ctest cts(3) 也是定義常對象

當然,下面的方案也行:

    const Ctest * cts = new Ctest(3);
    cout << cts->doubleA() << endl;

總結 ,常函數具有保護類成員的作用。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

囊谦县| 宁明县| 恩平市| 三河市| 甘南县| 嫩江县| 鄂尔多斯市| 马鞍山市| 微山县| 岳普湖县| 贵州省| 辽阳县| 八宿县| 武安市| 闵行区| 织金县| 区。| 唐山市| 金寨县| 新昌县| 珠海市| 尉氏县| 沙坪坝区| 尼木县| 临澧县| 民权县| 岳阳县| 洪泽县| 永平县| 合肥市| 临漳县| 荔波县| 婺源县| 青州市| 博湖县| 汤阴县| 疏附县| 罗源县| 普定县| 治多县| 枣强县|