當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


C++ Static Member用法及代碼示例


static關鍵字與變量一起使用,使變量的內存成為靜態,一旦聲明靜態變量,其內存就無法更改。要了解有關靜態關鍵字的更多信息,請參閱文章static Keyword in C++

C++ 中的靜態成員

類的靜態成員不與該類的對象關聯。就像靜態變量一旦聲明就分配了無法更改的內存一樣,每個對象都指向相同的內存。要了解有關該主題的更多信息,請參閱static Member in C++

例子:

class Person{
     static int index_number; 
};

一旦聲明了靜態成員,與該類關聯的所有對象都會將其視為相同的成員。

例子:

C++


// C++ Program to demonstrate
// Static member in a class
#include <iostream>
using namespace std;
class Student {
public:
    // static member
    static int total;
    // Constructor called
    Student() { total += 1; }
};
int Student::total = 0;
int main()
{
    // Student 1 declared
    Student s1;
    cout << "Number of students:" << s1.total << endl;
    // Student 2 declared
    Student s2;
    cout << "Number of students:" << s2.total << endl;
    // Student 3 declared
    Student s3;
    cout << "Number of students:" << s3.total << endl;
    return 0;
}
輸出
Number of students:1
Number of students:2
Number of students:3

C++ 中的靜態成員函數

類中的靜態成員函數是被聲明為靜態的函數,因為該函數具有如下定義的某些屬性:

  • 靜態成員函數獨立於類的任何對象。
  • 即使類的對象不存在,也可以調用靜態成員函數。
  • 還可以通過範圍解析運算符使用類名來訪問靜態成員函數。
  • 靜態成員函數可以訪問類內部或外部的靜態數據成員和靜態成員函數。
  • 靜態成員函數在類內部有作用域,不能訪問當前對象指針。
  • 您還可以使用靜態成員函數來確定已創建該類的多少個對象。

我們需要靜態成員函數的原因:

  • 靜態成員經常用於存儲類中所有對象共享的信息。
  • 例如,您可以使用靜態數據成員作為計數器來跟蹤特定類類型新生成的對象的數量。每次生成對象時都可以增加此靜態數據成員,以跟蹤對象的總數。

例子:

C++


// C++ Program to show the working of
// static member functions
#include <iostream>  
using namespace std; 
class Box  
{  
    private:  
    static int length; 
    static int breadth;  
    static int height;  
     
    public:
     
    static void print()  
    {  
        cout << "The value of the length is: " << length << endl;  
        cout << "The value of the breadth is: " << breadth << endl;  
        cout << "The value of the height is: " << height << endl;  
    }
};  
// initialize the static data members  
int Box :: length = 10;  
int Box :: breadth = 20;  
int Box :: height = 30;  
// Driver Code
   
int main()  
{
     
    Box b;  
     
    cout << "Static member function is called through Object name: \n" << endl;  
    b.print();  
     
    cout << "\nStatic member function is called through Class name: \n" << endl;  
    Box::print();  
     
    return 0;  
}
輸出
Static member function is called through Object name: 

The value of the length is: 10
The value of the breadth is: 20
The value of the height is: 30

Static member function is called through Class name: 

The value of the length is: 10
The value of the breadth is: 20
The value of the height is: 30


相關用法


注:本文由純淨天空篩選整理自akashjha2671大神的英文原創作品 Static Member Function in C++。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。