轉(zhuǎn)帖|其它|編輯:郝浩|2008-12-19 11:39:01.000|閱讀 1409 次
概述:C++中靜態(tài)成員--變量與函數(shù)
# 界面/圖表報(bào)表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
文章關(guān)鍵字:|C++|靜態(tài)成員|變量|函數(shù)|static|
使變量成為類獨(dú)一無二的資料,應(yīng)該獨(dú)立在個(gè)對象之外,方法是:定義其為static。例如;
class SavingAccount
{
private:
char m_name[40];
char m_addr[60];
double total;
static double m_rate;
};
static成員變量不屬于對象的一部分,而是類的一部分,所以程序可以在還沒有誕生任何對象的時(shí)候就處理此種成員變量。但是首先你必須初始化它。
初始化static成員變量不能安排在類的構(gòu)造函數(shù)中,因?yàn)闃?gòu)造函數(shù)可能一再被調(diào)用,而變量的初值卻只應(yīng)該設(shè)定一次。也不要把初始化安排在頭文件中,因?yàn)樗赡軙话谠S多地方。而應(yīng)該放在main函數(shù)之中,或全域函數(shù)中,或者任何函數(shù)之外。例如:
double SavingAccount::m_rate = 0.0075;
void main()
{----}
這么做可曾考慮到m_rate是private屬性?沒有關(guān)系,注意:設(shè)定static成員變量初值時(shí),不受任何存取權(quán)限的束縛。(初始化時(shí)double類型必須要有)但是下面兩種存取static變量的方式,就必須滿足變量是public權(quán)限。
//第一種方式
void main()
{SavingAccount::m_rate = 0.0075;}//此行成立,必須把m_rate改為public
//第二種方式
void main()
{
SavingAccount myAccount;
myAccount.m_rate = 0.0075; //此行成立,必須把m_rate改為public
}
但是如果希望在產(chǎn)生任何對象之前就存取其class的private static成員變量,則必須設(shè)計(jì)一個(gè)static成員函數(shù)(例如以下的setRate)
class SavingAccount
{
private:
char m_name[40];
char m_addr[60];
double total;
static double m_rate;
public:
static void setRate(double newRate){m_rate = newRate;}
};
double SavingAccount::m_rate = 0.0075;
void main()
{
SavingAccount::setRate(0.0074);
SavingAccount myAccount;
myAccount.setRate(0.0074);
}
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請郵件反饋至chenjj@ke049m.cn
文章轉(zhuǎn)載自:DIY部落