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