普通成員方法
1.屬於類的作用域
2.呼叫該方法時,需要依賴乙個物件(常物件不是無法呼叫的)
3.可以任意訪問物件的私有成員變數
4.會產生this指標—>「類名」 *this
static靜態成員方法
1.屬於類的作用域
2.用類名作用域來呼叫方法
3.可以訪問物件的任意私有成員,但是僅限於不依賴物件的成員(只能呼叫其他的static靜態成員)
4.沒有this指標
普通成員方法和靜態成員方法最核心的區別就是編譯器會給普通成員方法新增乙個this形參變數,而靜態方法不會生成this形參。如果我們方法訪問的是所有物件共享的資訊,最好寫成靜態成員方法。
常成員方法
1.產生的this指標是—>const 「類名」 *this。
2.屬於類的作用域
3.呼叫依賴乙個物件,普通物件常物件都可以
4.可以任意訪問物件的私有成員,但是只能讀,不能寫
如果這個方法只做了讀操作而不做寫操作,建議寫成常成員方法。
下面是乙個例項:
#include
using namespace std;
class
cdate
void
show()
const
private
: int _year;
int _month;
int _day;};
class
cgoods
//常成員方法,只要是唯讀操作的成員方法,一律實現成常成員方法
void
show()
const
//列印商品私有的資訊 cgoods *this
//普通成員方法
void
show()
//const cgoods *this
//靜態成員方法,不依賴於物件,也就沒有this指標
static
void
showcgoodscount()
//列印所有商品共享的資訊
private
: char _name[20]
; int _amount;
double _price;
cdate _date;
//成員物件
static int _count;
// 靜態的成員變數只是用來宣告,還需要在類外定義 不屬於物件,而是屬於類級別 用來記錄商品的總數量};
//靜態成員變數一定要在類外進行定義並且初始化
int cgoods:
:_count =0;
int main()
複習 C 之const成員
const int num 0 常量必須要初始化,而且不可修改。int num 100 const int p 在這兩句 後,p可以修改,p不可以修改。int num 100 int const p 在這兩句 後,p可以修改,p不可以修改。所以變數能不能修改看的是宣告時const後面的是什麼。con...
複習 C 之static成員
當類中只有乙個int成員時,這個類的大小為4,但是類中只有乙個靜態int成員時,這個類的大小為1。includeusing namespace std class cperson 只有乙個int成員時 int main includeusing namespace std class cperson...
C 靜態成員和成員指標
靜態成員函式 單例模式 成員指標 靜態成員變數 class 類名 資料型別 類名 變數 初值 定義和初始化類名 靜態成員變數 推薦 物件.靜態成員變數 和上面等價 include using namespace std class aint m data static int s data 宣告 靜...