類的靜態成員由整個類所共享,而不屬於任何乙個物件。
在成員的宣告之前加上static來將它宣告為靜態成員。
類的靜態成員可以是常量、引用、指標、類型別,也可以是public或private
class a
static
void rate(double); //宣告乙個靜態成員函式
private:
static
double interestrate; //宣告乙個靜態成員變數
};
因為靜態成員不屬於任何乙個物件,所以靜態成員函式也不包含this指標因為靜態成員函式不與普通成員變數相關,所以也不能宣告成const的
double r;
r =a::rate();
儘管類的靜態成員不屬於任何乙個類的物件,但可以通過類的物件(指標、引用)來訪問它。
a obj;
a *pointer =
&obj;
r = obj.rate(); //通過類的物件訪問
r = pointer->rate(); //通過類的指標訪問
class account
//直接使用靜態變數成員interestrate,並且不需要作用域運算子,但interestrate必須先定義和初始化
private:
static
double interestrate;
};
但反過來,在類的靜態成員函式中使用普通成員卻不可以,因為類的普通成員依託於具體的物件,在靜態成員函式中這些普通成員還沒有真正的被生成出來。
需要注意的是,static關鍵字只在類內宣告時出現一次,類外定義時不可重複
void account::rate(double newrate) //不可重複static
因為靜態資料成員不屬於任何乙個物件,所以他們不是在建立類的物件時被定義的,意味著他們不是由類的建構函式初始化的類內的靜態資料成員只能算宣告,並沒有被真正定義,必須在類外定義和初始化後才可以使用因此,必須在類的外部定義和初始化每個靜態資料成員
在類的外部定義並初始化乙個靜態資料成員和定義成員函式差不多
double account::interestrate = initrate();
//可以使用類的靜態函式成員
其實可以用const或constexpr來在類內初始化靜態變數成員
class
account;
class
bar;
class screen;
C 類靜態成員與類靜態成員函式
當將類的某個資料成員宣告為static時,該靜態資料成員只能被定義一次,而且要被同類的所有物件共享。各個物件都擁有類中每乙個普通資料成員的副本,但靜態資料成員只有乙個例項存在,與定義了多少類物件無關。靜態方法就是與該類相關的,是類的一種行為,而不是與該類的例項物件相關。靜態資料成員的用途之一是統計有...
C 類靜態成員與類靜態成員函式
當將類的某個資料成員宣告為static時,該靜態資料成員只能被定義一次,而且要被同類的所有物件共享。各個物件都擁有類中每乙個普通資料成員的副本,但靜態資料成員只有乙個例項存在,與定義了多少類物件無關。靜態方法就是與該類相關的,是類的一種行為,而不是與該類的例項物件相關。靜態資料成員的用途之一是統計有...
C 類靜態成員與類靜態成員函式
當將類的某個資料成員宣告為static時,該靜態資料成員只能被定義一次,而且要被同類的所有物件共享。各個物件都擁有類中每乙個普通資料成員的副本,但靜態資料成員只有乙個例項存在,與定義了多少類物件無關。靜態方法就是與該類相關的,是類的一種行為,而不是與該類的例項物件相關。靜態資料成員的用途之一是統計有...