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

C++ static函數(shù)調(diào)用問題小結(jié)

 更新時間:2024年03月20日 16:00:00   作者:小熊醬  
靜態(tài)成員變量是在程序編譯時分配空間,而在程序結(jié)束時釋放空間,這篇文章主要介紹了C++ static函數(shù)調(diào)用問題小結(jié),需要的朋友可以參考下

靜態(tài)成員變量雖然在類中,但它并不是隨對象的建立而分配空間的,也不是隨對象的撤銷而釋放(一般的成員在對象建立時會分配空間,在對象撤銷時會釋放)。靜態(tài)成員變量是在程序編譯時分配空間,而在程序結(jié)束時釋放空間。

  • 靜態(tài)成員的定義和聲明要加個關(guān)鍵static。靜態(tài)成員可以通過雙冒號來使用,即<類名>::<靜態(tài)成員名>。

  • 初始化靜態(tài)成員變量要在類的外面進行。初始化的格式如下:數(shù)據(jù)類型 類名::靜態(tài)成員變量名 = 初值;

  • 不能用參數(shù)初始化表,對靜態(tài)成員變量進行初始化。

  • 既可以通過類名來對靜態(tài)成員變量進行引用,也可以通過對象名來對靜態(tài)成員變量進行引用。

  • 普通成員函數(shù)和靜態(tài)成員函數(shù)的區(qū)別是:普通成員函數(shù)在參數(shù)傳遞時編譯器會隱藏地傳遞一個this指針.通過this指針來確定調(diào)用類產(chǎn)生的哪個對象;但是靜態(tài)成員函數(shù)沒有this指針,不知道應(yīng)該訪問哪個對象中的數(shù)據(jù),所以在程序中不可以用靜態(tài)成員函數(shù)訪問類中的普通變量.

下面通過幾個例子來總結(jié)靜態(tài)成員變量和靜態(tài)成員函數(shù)的使用規(guī)則。

1. 通過類名調(diào)用靜態(tài)成員函數(shù)和非靜態(tài)成員函數(shù)

class Point{
public:
     void init()
     {}
     static void output()
     {}
};
void main()
{
     point::init(); // error
     Point::output();
}

結(jié)論一:不能通過類名來調(diào)用類的非靜態(tài)成員函數(shù)

2. 通過類的對象調(diào)用靜態(tài)成員函數(shù)和非靜態(tài)成員函數(shù)

class Point{
public:
    void init()
    {}
    static void output()
    {}
};
void main()
{
    Point pt;
    pt.init();
    pt.output();
}

結(jié)論二:類的對象可以使用靜態(tài)成員函數(shù)和非靜態(tài)成員函數(shù)。

3. 在類的靜態(tài)成員函數(shù)中使用類的非靜態(tài)成員

#include <iostream>
using namespace std;
class Point{
public:
    void init()
    {
    }
    static void output()
    {
        cout << "m_x=" << m_x << endl;
    }
private:
    int m_x;
};
void main()
{
    Point pt;
    pt.output();
}

編譯出錯:因為靜態(tài)成員函數(shù)屬于整個類,在類實例化對象之前就已經(jīng)分配空間了,而類的非靜態(tài)成員必須在類實例化對象后才有內(nèi)存空間,所以這個調(diào)用就會出錯,就好比沒有聲明一個變量卻提前使用它一樣。

結(jié)論三:靜態(tài)成員函數(shù)中不能引用非靜態(tài)成員。

#include <iostream>
using namespace std;

class Point{
public:
    void init()
    {
        output();
    }
    static void output()
    {}
private:
    int m_x;
};
void main()
{
    Point pt;
    pt.init();
}

結(jié)論四:類的非靜態(tài)成員可以調(diào)用靜態(tài)成員函數(shù),但反之不能。

5. 使用類的靜態(tài)成員變量

#include <iostream>
using namespace std;
class Point{
public:
    Point()
    {
        m_nPointCount++;
    }
    ~Point()
    {
        m_nPointCount++;
    }
    static void output()
    {
       cout << "m_nPointCount=" << m_nPointCount << endl;
    }
private:
   static  int m_nPointCount;
};
void main()
{
    Point pt;
    pt.output();
}

鏈接出錯:error LNK2001: 無法解析的外部符號 "private: static int Point::m_nPointCount" (?m_nPointCount@Point@@0HA)

這是因為類的成員變量在使用前必須先初始化。改成如下代碼即可:

//類外初始化靜態(tài)成員變量時,不用帶static關(guān)鍵字
int Point::m_nPointCount = 0;

結(jié)論五:類的靜態(tài)成員變量必須先初始化再使用。

到此這篇關(guān)于C++ static函數(shù)調(diào)用問題小結(jié)的文章就介紹到這了,更多相關(guān)C++ static函數(shù)調(diào)用內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • QT線程QThread的使用介紹

    QT線程QThread的使用介紹

    在進行桌面應(yīng)用程序開發(fā)的時候,假設(shè)程序在某些情況要處理復(fù)雜邏輯, 如果一個線程去處理,就會導(dǎo)致窗口卡頓,無法處理用戶操作。這就需要使用多線程,其中一個線程處理窗口事件,其他線程進行邏輯運算,多個線程各司其職,不僅可以提高用戶體驗還可以提升程序的執(zhí)行效率
    2022-09-09
  • C++ 運算符重載的使用

    C++ 運算符重載的使用

    運算符重載使自定義類型支持內(nèi)置運算符操作,提升代碼可讀性,通過成員或全局函數(shù)實現(xiàn),文中通過示例代碼介紹的非常詳細,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2025-07-07
  • C++中String類的常用接口函數(shù)總結(jié)

    C++中String類的常用接口函數(shù)總結(jié)

    這篇文章主要介紹了C++中Stirng類的常用接口函數(shù),文中有詳細的代碼示例供大家參考,對我們學(xué)習(xí)C++有一定的幫助,感興趣的同學(xué)可以跟著小編一起來學(xué)習(xí)
    2023-06-06
  • C語言實現(xiàn)掃雷游戲詳細代碼實例

    C語言實現(xiàn)掃雷游戲詳細代碼實例

    這篇文章主要介紹了C語言實現(xiàn)掃雷游戲詳細代碼實例,有感興趣的同學(xué)可以借鑒參考下
    2021-02-02
  • C語言 數(shù)據(jù)結(jié)構(gòu)鏈表的實例(十九種操作)

    C語言 數(shù)據(jù)結(jié)構(gòu)鏈表的實例(十九種操作)

    這篇文章主要介紹了C語言 數(shù)據(jù)結(jié)構(gòu)鏈表的實例(十九種操作)的相關(guān)資料,需要的朋友可以參考下
    2017-07-07
  • C++實現(xiàn)LeetCode(76.最小窗口子串)

    C++實現(xiàn)LeetCode(76.最小窗口子串)

    這篇文章主要介紹了C++實現(xiàn)LeetCode(76.最小窗口子串),本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細內(nèi)容,需要的朋友可以參考下
    2021-07-07
  • QT實現(xiàn)按鈕開關(guān)Form窗體的效果的示例代碼

    QT實現(xiàn)按鈕開關(guān)Form窗體的效果的示例代碼

    本文主要介紹了QT實現(xiàn)按鈕開關(guān)Form窗體的效果的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-07-07
  • C語言深入探究直接插入排序與希爾排序使用案例講解

    C語言深入探究直接插入排序與希爾排序使用案例講解

    算法中排序是十分重要的,而每一個學(xué)習(xí)計算機的都會在初期的時候接觸到這種排序,下面這篇文章主要給大家介紹了關(guān)于c語言直接插入排序與希爾排序使用的相關(guān)資料,需要的朋友可以參考下
    2022-05-05
  • C語言:十進制,BCD碼互換詳解

    C語言:十進制,BCD碼互換詳解

    這篇文章主要介紹了C語言十進制,BCD碼互換實例,小編覺得這篇文章寫的還不錯,實例簡單明了,需要的朋友可以參考下
    2021-09-09
  • C++實現(xiàn)日期類(Date類)的方法

    C++實現(xiàn)日期類(Date類)的方法

    下面小編就為大家?guī)硪黄狢++實現(xiàn)日期類(Date類)的方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-01-01

最新評論

嘉善县| 定襄县| 通江县| 莱西市| 永安市| 阿拉善左旗| 当阳市| 雅安市| 咸丰县| 大英县| 防城港市| 广河县| 永州市| 海林市| 巴青县| 台南县| 库尔勒市| 汝南县| 赤壁市| 阿拉尔市| 襄樊市| 高碑店市| 防城港市| 崇信县| 额济纳旗| 玛纳斯县| 常德市| 通山县| 当雄县| 崇仁县| 盘山县| 观塘区| 南和县| 远安县| 郑州市| 荣成市| 敦化市| 墨江| 大连市| 紫云| 闽清县|