cpp 专题
专题目录
您的位置:cpp > cpp 专题 > C++ static关键字
C++ static关键字
作者:--    发布时间:2019-11-20

在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

网站声明:
本站部分内容来自网络,如您发现本站内容
侵害到您的利益,请联系本站管理员处理。
联系站长
373515719@qq.com
关于本站:
编程参考手册