当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


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++。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。