C++ static關鍵字


在C++中,static是屬於類而不是範例的關鍵字或修飾符。 因此,不需要範例來存取靜態成員。 在C++中,static可以是欄位,方法,建構函式,類,屬性,操作符和事件。

C++ static關鍵字的優點

記憶體效率: 現在我們不需要建立範例來存取靜態成員,因此它節省了記憶體。 此外,它屬於一種型別,所以每次建立範例時不會再去獲取記憶體。

C++靜態欄位

使用static關鍵字宣告欄位稱為靜態欄位。它不像每次建立物件時都要獲取記憶體的範例欄位,在記憶體中只建立一個靜態欄位的副本。它被共用給所有的物件。

它用於參照所有物件的公共屬性,如:Account類中的利率(rateOfInterest),Employee類中的公司名稱(companyName)等。

C++靜態欄位範例

下面來看看看C++中靜態(static)欄位的簡單範例。

#include <iostream>  
using namespace std;  
class Account {  
   public:  
       int accno; //data member (also instance variable)      
       string name; //data member(also instance variable)  
       static float rateOfInterest;   
       Account(int accno, string name)   
        {    
             this->accno = accno;    
            this->name = name;    
        }    
       void display()    
        {    
            cout<<accno<< "<<name<< " "<<rateOfInterest<<endl;   
        }    
};  
float Account::rateOfInterest=6.5;  
int main(void) {  
    Account a1 =Account(201, "Sanjay"); //creating an object of Employee   
    Account a2=Account(202, "Calf"); //creating an object of Employee  
    a1.display();    
    a2.display();    
    return 0;  
}

上面程式碼執行結果如下-

201 Sanjay 6.5
202 Calf 6.5

C++靜態欄位範例:統計物件數量

下面來看看看C++中static關鍵字的另一個例子,統計建立物件的數量。

#include <iostream>  
using namespace std;  
class Account {  
   public:  
       int accno; //data member (also instance variable)      
       string name;   
       static int count;     
       Account(int accno, string name)   
        {    
             this->accno = accno;    
            this->name = name;    
            count++;  
        }    
       void display()    
        {    
            cout<<accno<<" "<<name<<endl;   
        }    
};  
int Account::count=0;  
int main(void) {  
    Account a1 =Account(201, "Sanjay"); //creating an object of Account  
    Account a2=Account(202, "Calf");   
     Account a3=Account(203, "Ranjana");  
    a1.display();    
    a2.display();    
    a3.display();    
    cout<<"Total Objects are: "<<Account::count;  
    return 0;  
}

上面程式碼執行結果如下-

201 Sanjay
202 Calf
203 Ranjana
Total Objects are: 3