問題:我看的書上寫的對私有部分的訪問可以是公共部分的成員函式,也可以是友員函式,那麼可以直接對私有部分的靜態成員進行初始化嗎?回答:
1.static成員的所有者是類本身和物件,但是多有物件擁有一樣的靜態成員。從而在定義物件時不能通過建構函式對其進行初始化。2.靜態成員不能在類定義裡邊初始化,只能在class body外初始化。
3.靜態成員仍然遵循public,private,protected訪問準則。
4.靜態成員函式沒有this指標,它不能返回非靜態成員,因為除了物件會呼叫它外,類本身也可以呼叫。
下面乙個類,和其中的一些錯誤用法:
#include#include
using
namespace std;
class account
//account(string name, int money, double rate):owner(name), amount(money), interestrate(rate)
//是錯誤的
~account()
////
靜態成員
static
double rate()
static
void rate(double);
static
double interestrate;//
public,其他非成員可以訪問
private:
string owner;
double amount;
//static double interestrate;
//private, 成員和友元才可訪問
static
double initrate();
};double account::interestrate = 2.0; //
正確的靜態成員初始化
//double account::interestrate = account::initrate();
//用靜態成員函式對靜態成員進行初始化,正確,因為private成員可以訪問private成員,以上兩種初始化只能選其一
//account::interestrate = 3.0;
//錯誤,不能通過編譯,原因不明,按編譯結果看,編譯器將這個賦值語句當做對靜態成員的初始化(因為編譯器提醒少了型別:double)。但主函式中可以通過,見下
double account::initrate()
//所有的靜態成員在類體外定義時都不再寫static
void account::rate(double newrate)
int main ()
好了,就這些了!其中的數字只是為了資料的明顯,沒有實際意義!
C 中訪問私有成員
首先我必須承認訪問乙個類的私有成員不是什麼好做法。大家也都知道私有成員在外部是不能被訪問的。而乙個類中會存在很多私有成員 如私有字段 私有屬性 私有方法。對於私有成員訪問,可以套用下面這種非常好的方式去解決。private string name public string name set 但是有...
C 中訪問私有成員
首先訪問乙個類的私有成員不是什麼好做法。大家都知道私有成員在外部是不能被訪問的。乙個類中會存在很多私有成員 如私有字段 私有屬性 私有方法。對於私有成員造訪,可以套用下面這種非常好的方式去解決。private string name public string name set 但是有時候,源 是別...
C 中訪問私有成員
首先我必須承認訪問乙個類的私有成員不是什麼好做法。大家也都知道私有成員在外部是不能被訪問的。而乙個類中會存在很多私有成員 如私有字段 私有屬性 私有方法。對於私有成員訪問,可以套用下面這種非常好的方式去解決。private string name public string name set 但是有...