- 相關(guān)推薦
論靜態(tài)成員在C++中的應用
[論文關(guān)鍵詞]C++ 靜態(tài)成員 共享
[論文摘要]C++類(lèi)中的靜態(tài)成員是類(lèi)中各個(gè)對象所共享的成員,從數據共享的角度出發(fā),介紹靜態(tài)成員在類(lèi)中實(shí)現數據共享的方法、作用。
C++中類(lèi)的成員分為靜態(tài)數據成員和靜態(tài)成員函數。它的作用類(lèi)似于全局變量,可以實(shí)現C++多個(gè)對象之間的數據共享,但全局變量在程序中的可操作性難于控制,經(jīng)常會(huì )帶來(lái)不安全性,所以,考慮到程序的安全性,作者在本文講述了靜態(tài)成員在C++程序中的使用方法及作用。
一、靜態(tài)數據成員的應用
C++中的靜態(tài)數據成員是同一個(gè)類(lèi)中所有對象所共享的成員,靜態(tài)數據成員中存放的是所有對象的值,不是某一個(gè)對象的值,所以同一類(lèi)中的每個(gè)對象的值都是一樣,但它的值也是可以改變的。通過(guò)下面的實(shí)例可以對以上的內容加以證實(shí)、說(shuō)明靜態(tài)數據成員在C++類(lèi)中的使用方法及作用。
。ㄒ唬╈o態(tài)數據成員的定義、初始化
靜態(tài)數據成員定義是以static關(guān)鍵字開(kāi)始,后跟靜態(tài)數據成員類(lèi)型符、變量名;例:staticints;
。ǘ╈o態(tài)數據成員的初始化
靜態(tài)數據成員的初始化是在類(lèi)體外進(jìn)行,初始化時(shí)不用加訪(fǎng)問(wèn)權限符,但是靜態(tài)成數據成員是類(lèi)的成員,所以在初始化時(shí)應指明該成員的類(lèi)名;例如在類(lèi)名為 Tstu的類(lèi)中定義了一名為s整型靜態(tài)數據成員,則初始化格式為:int Tstu::s =0;
。ㄈ╈o態(tài)數據成員的引用實(shí)例
#include
class Tstu//類(lèi)的說(shuō)明;
{public://定義二個(gè)成員函數;
Tstu(int a,int b); //定義構造函數,用來(lái)對數據成員賦初值;
bb( );
private:
int x,y;//定義二個(gè)數據成員;
static int s;};//定義一個(gè)靜態(tài)的數據成員,類(lèi)Tstu定義結束;
int Tstu::s=0; //靜態(tài)數據成員的賦值;
Tstu::Tstu(int a,int b)//構造函數的實(shí)現部分;
{ x=a;y=b;}
void Tstu::bb( )//成員函數的實(shí)現部分;
{s=s+x+y;cout<<”s=”<
{Tstu t1(10,20),t2(5,3);
t1.bb( );t2.bb( );}
對于以上的程序,類(lèi)Tstu中的t1對象調用成員函數bb( )之后,靜態(tài)數據成員s中的值是30,那么對象t2在調用前,對于對象t2,s中的值已是30,因為s中的值是每個(gè)對象所共享的,t2對象調用后,s中最后的值是38。
我們再來(lái)看以下代碼:
#include
class Ta{
public:
Ta(){n++; } //定義構造函數,當定義對象時(shí)n的值自動(dòng)加1;
~Ta(){n--; } //定義析構函數,釋放對象時(shí)n的值自動(dòng)減1;
int sum(){return n; }//成員函數sum( )用來(lái)返回靜態(tài)數據成員n的值;
private:
static int n;};
int Ta::n = 0;
當創(chuàng )建該類(lèi)對象實(shí)體時(shí),由于n為所有對象所共享的數據,從而可以當前創(chuàng )建的所有對象的數量。這一技巧可以運用到很多方面,如對象實(shí)體的互斥關(guān)系,引用計數等相關(guān)方面。C++類(lèi)中的靜態(tài)成員有一個(gè)非常好的功能,那就是無(wú)論類(lèi)定義了多少個(gè)對象,這些對象始終都共同使用這一個(gè)靜態(tài)成員,在使用時(shí)需要注意的是類(lèi)靜態(tài)數據成員除了在類(lèi)中形式說(shuō)明之外,必須在使用前在對象說(shuō)明之外作定義性說(shuō)明,主要是為了給類(lèi)中靜態(tài)數據成員分配內存。通過(guò)這個(gè)實(shí)例可更加清晰的解述靜態(tài)數據成員在類(lèi)中實(shí)現數據的方法、作用。
二、靜態(tài)成員函數的應用
靜態(tài)成員函數與靜態(tài)成員的特性相似,屬于類(lèi)的成員,不是對象的成員。在靜態(tài)成員函數的實(shí)現中,可以直接引中類(lèi)中說(shuō)明的靜態(tài)成員。下面通過(guò)具體的實(shí)例說(shuō)明靜態(tài)成員函數的應用。
我們可以通過(guò)以下的代碼來(lái)看看靜態(tài)成員函數的應用:
#include
class T
{public:
T(int a){x=a;y=y+a;}
Static void f1(T t);//定義靜態(tài)成員函數;
Private:
int x;
static int y;};
void T::f1(T t)
{cout<<”x=”<
void main( )
{T m1(2),m2(4);
T::f1(m1);T::f1(m2);}
以上程序的執行結果分別是x=2,y=6和x=4,y=6; 在T類(lèi)中,定義了靜態(tài)成員函數f1( ),在該函數的實(shí)現中,可以直接引有類(lèi)的靜態(tài)數據成員,但引用非靜態(tài)成員是通過(guò)對象進(jìn)行的,對于類(lèi)靜態(tài)函數成員而言,則該函數只能涉及其它類(lèi)靜態(tài)成員時(shí),否則該函數不具有任何確切含義,因為不同對象非靜態(tài)成員取值可能不同。
三、
本文是筆者根據自己多年教學(xué)體會(huì )及經(jīng)驗,用簡(jiǎn)單的例子和簡(jiǎn)練的敘述講解C++中靜態(tài)成員在實(shí)現數據共享中的應用,作用。文中如有不足之處,望各位讀者批評指正。
參考文獻:
[1]張素琴.C++程序設計[M].北京:清華大學(xué)出版社.1995.
[2]呂軍,楊琦等.Visual C++與面向對象程序設計教程[M].北京:高等出版社.2006.
【論靜態(tài)成員在C++中的應用】相關(guān)文章:
論知識管理在企業(yè)中的應用03-17
論力學(xué)在橋梁設計中的應用06-15
論超聲在各個(gè)病重中的康復應用11-15
論PowerPoint在英語(yǔ)教學(xué)中的應用12-06
論動(dòng)畫(huà)場(chǎng)景設計中的色彩應用12-03
論音樂(lè )在幼兒教育中的應用論文11-30
論等效翻譯及其在漢英翻譯中的應用03-11
論數學(xué)建模在經(jīng)濟學(xué)中的應用03-19
論Excel在日常工作中的應用03-27