程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> static成員理解

static成員理解

編輯:關於C語言

 

有時程序中有些數據需要持久保存,或者其他原因,需要調用全局的,但全局的對於開發來說,比較危險。這裡介紹static,感覺很有用。

 

      對於static我是這樣理解的:

 

類中的一般成員在生成對象的時候,每個成員都關聯著對象。因此對象可以調用自己的成員,因此this指針也就有了意義,而對於static聲明的成員,只關聯於類,生成對象的時候不對該成員進行實例化,因此對象無法對此成員進行調用,this指針也就沒意義了。

 

      除此之外,感覺static很有優勢,可以替代全局的部分功能,同時還具有了封裝屬性。具體如下代碼:

 

Test.h

 

 

#ifndef TEST_H 

#define TEST_H 

 

#include<iostream> 

using namespace std; 

 

class Test 

    public: 

        Test(); 

        void set(); 

        void print(); 

        virtual ~Test(); 

    protected: 

    private: 

        static int num;         //私有靜態成員,具有封裝性 

        //static int num = 0;   //聲明時也不能定義。但const static int num=0;可以定義,例外。 

}; 

#endif // TEST_H 

 

#include "../include/Test.h" 

int Test::num = 0;      //靜態成員初始化 

Test::Test() 

    //ctor 

   // this->num = 0;    //靜態成員只能定義一次,不能在類初始化中定義 

void Test::set() 

    num ++; 

void Test::print() 

    cout << num << endl; 

 

Test::~Test() 

    //dtor 

 

#include <iostream> 

#include "./include/Test.h" 

using namespace std; 

 

int main() 

    Test t; 

    // t.num = 9;  //私有成員無法使用 

    t.set(); 

    t.print(); 

    return 0; 

 

 

望廣大網友給予指導…

 

摘自Leeboy_Wang的專欄

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved