当前位置:编程学习 > C/C++ >>

静态成员变量与静态成员函数

静态成员变量不专属于某个对象,他属于整个类中所有对象的成员变量,在实例化一个对象的时候可能无法给它开辟内存,因此我们需要在全局为他开辟内存。


[cpp] 
#include<iostream> 
using namespace std; 
class A   
{   
public:   
<span style="white-space:pre">  </span>static int count; 
<span style="white-space:pre">  </span>A(int i):key(i) 
<span style="white-space:pre">  </span>{ 
<span style="white-space:pre">      </span>count++; 
<span style="white-space:pre">      </span>cout<<"构造函数!"<<endl; 
<span style="white-space:pre">  </span>} 
<span style="white-space:pre">  </span>~A() 
<span style="white-space:pre">  </span>{ 
<span style="white-space:pre">      </span>count--; 
<span style="white-space:pre">      </span>cout<<"析构函数!"<<count<<endl; 
<span style="white-space:pre">  </span>} 
<span style="white-space:pre">  </span>int Getkey() 
<span style="white-space:pre">  </span>{ 
<span style="white-space:pre">      </span>return key; 
<span style="white-space:pre">  </span>} 
<span style="white-space:pre">  </span>int GetCount() 
<span style="white-space:pre">  </span>{ 
<span style="white-space:pre">      </span>return count; 
<span style="white-space:pre">  </span>} 
private: 
<span style="white-space:pre">  </span>int key; 
};   
int A::count=0; 
int main() 
{ www.zzzyk.com
<span style="white-space:pre">  </span> A a(5); 
<span style="white-space:pre">  </span> cout<<a.Getkey()<<" "<<a.GetCount()<<endl; 
<span style="white-space:pre">  </span> A b(6); 
<span style="white-space:pre">  </span> //可以直接用类名去访问静态成员变量 
<span style="white-space:pre">  </span> cout<<A::count<<endl; 
<span style="white-space:pre">  </span> cout<<b.GetCount()<<endl; 
<span style="white-space:pre">  </span> return 0; 

静态成员函数不能访问普通成员变量以及普通成员函数,但是可以访问静态成员变量和静态成员函数。因为静态成员函数是属于整个类的,所以他不能访问某个对象的 成员
变量,因为它没有this指针,但是他可以访问静态成员函数和静态成员变量。
[cpp] 
#include<iostream> 
using namespace std; 
class A   
{   
public:   
     
    A(int i):key(i) 
    { 
        count++; 
        cout<<"构造函数!"<<endl; 
    } 
    ~A() 
    { 
        count--; 
        cout<<"析构函数!"<<count<<endl; 
    } 
    int Getkey() 
    { 
        return key; 
    } 
     static int GetCount() 
    { 
        return count; 
    } 
    static void Show() 
    { 
        cout<<count<<endl; 
        count++; 
        //需要讲GetCount变成static才能被Show访问 
        cout<<GetCount(); 
    } 
private: 
    int key; 
    static int count; 
};   
int A::count=10; 
int main() 

    A::Show(); 
     A a(5); 
     cout<<a.Getkey()<<" "<<a.GetCount()<<endl; 
     A b(6); 
 
     cout<<b.GetCount()<<endl; 
     return 0; 

补充:软件开发 , C++ ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,