C++類的靜態成員_12

來源:互聯網
上載者:User

標籤:需要   tchar   col   iostream   全域變數   mes   stat   成員變數   class   

一。成員變數的回顧

  1.通過對象名能夠訪問 public 成員變數。

  2.每個對象都可以有只屬於自己的成員變數

  3.成員變數不能在對象之間共用。

二。類的靜態成員

  1. C++中可以定義靜態成員變數和靜態成員函數

  2. 靜態成員屬於整個類所有,不需要依賴任何對象。

  3. 可以通過類名直接存取public 靜態成員

  4. 可以通過對象名訪問public靜態成員

  5. 靜態成員函數可以直接存取靜態成員變數。

三。靜態成員變數的定義

  1. 在定義時直接通過 static 關鍵字修飾

  2. 靜態成員變數不依賴於任何對象,需要在類外單獨分配空間。

  3. 文法規則:Type ClassName::VarName:

#include <cstdlib>#include <iostream>using namespace std;class Test{  private:        static int ci;         public:          static int GetI()        {            return ci;            }        static void SetI(int i)        {              ci = i;          }};int Test::ci = 0;int main(int argc, char *argv[]){    Test::SetI(5);    cout<<"Test::ci = " << Test::GetI() << "\n";        cout << "Press the enter key to continue ...";    cin.get();    return EXIT_SUCCESS;

  5.從命名空間的角度

    a。類的靜態成員只是類這個命名空間中的全域變數和全域函數

    b。不同的是,類可以對靜態成員進行存取權限的限制,而命名空間不行

  6.從物件導向的角度

    a。類的靜態成員屬於類概念本身

    b。類的所有對象共用相同的靜態成員

四。靜態成員函數的定義

  1.在定義時直接通過 static 關鍵字修飾

  2.其餘部分與普通成員函數定義相同

五。靜態成員函數和普通成員函數有什麼區別?

  c++類對象中的成員變數和成員函數是分開儲存的

  1.成員變數

    普通成員變數:儲存於對象中,與 struct 變數有相同的記憶體布局和位元組對齊

    靜態成員變數:儲存於全域資料區中

  2.成員函數

    儲存於程式碼片段中

六。

#include <stdio.h>class Test{    int i;    int j;    int k;        static int c;public:    Test(int i, int j, int k)    {        this->i = i;        this->j = j;        this->k = k;    }        void print()    {        printf("Object Address: %08X\n", this);        printf("&c = %08X, c = %d\n", &c, c);        printf("&i = %08X, i = %d\n", &i, i);        printf("&j = %08X, j = %d\n", &j, j);        printf("&k = %08X, k = %d\n", &k, k);    }};int Test::c;int main(){    Test t1(0, 1, 2);    Test t2(3, 4, 5);        printf("t1 Address: %08X\n", &t1);    t1.print();    printf("t2 Address: %08X\n", &t2);    t2.print();        printf("Press any key to continue...");    getchar();    return 0;}

六。小結

  1.C++類中可以包含屬於類概念的靜態成員

  2.靜態成員變數在全域資料區分配空間

  3.靜態成員函數不包含隱藏的this指標

  4.通過類名可以直接存取靜態成員

C++類的靜態成員_12

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.