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

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

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

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

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

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

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

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

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

下面通過幾個(gè)例子來總結(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. 通過類的對(duì)象調(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é)論二:類的對(duì)象可以使用靜態(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();
}

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

結(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();
}

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

這是因?yàn)轭惖某蓡T變量在使用前必須先初始化。改成如下代碼即可:

//類外初始化靜態(tài)成員變量時(shí),不用帶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)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • QT線程QThread的使用介紹

    QT線程QThread的使用介紹

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

    C++ 運(yùn)算符重載的使用

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

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

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

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

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

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

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

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

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

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

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

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

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

    C語言:十進(jìn)制,BCD碼互換詳解

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

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

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

最新評(píng)論

蓬安县| 吴忠市| 沧州市| 建瓯市| 来宾市| 丰县| 长汀县| 保亭| 双桥区| 富源县| 乐清市| 沙坪坝区| 盘山县| 绍兴县| 潮州市| 包头市| 高淳县| 长春市| 顺义区| 万全县| 泽普县| 曲松县| 平利县| 宁城县| 杂多县| 丹凤县| 西畴县| 沧源| 正镶白旗| 南开区| 迭部县| 封开县| 河南省| 龙江县| 土默特左旗| 长垣县| 南投市| 鱼台县| 山东省| 鲜城| 滨海县|