#include using namespace std;
/*new與malloc的區別:
new:先申請記憶體然後構造
malloc:只申請記憶體
delete與free的區別:
delete:先析構然後釋放記憶體
free:直接釋放記憶體
*//*
靜態的成員變數,乙個類只有乙份,不佔物件記憶體
靜態成員變數的訪問,不依賴於物件,可以用「類名::靜態成員變數」
靜態的成員方法的訪問,不依賴於物件,可以用「類名::靜態成員方法名」
引申: 靜態成員方法和靜態成員變數的使用不依賴this指標
所以靜態的成員方法不允許使用使用普通的成員方法和普通的成員變數(因為成員變數依賴於this指標。因為成員方法裡面有普通成員方法,所以也不能用)
但是普通的成員方法中可以使用靜態的成員方法和成員變數(因為靜態的成員變數和方法不依賴this指標,所以可以使用)
*//*
初始化列表:
在進入建構函式之前,對成員進行初始化
如果存在必須初始化的成員,則一定要將它們放在初始化列表當中( 「const」「&」)
*//*
成員變數 是 物件
成員物件 在 類物件構造之前構造成員物件
如果成員物件不存在預設的建構函式,就必須將他寫在初始化列表
物件構造順序:
先構造成員物件
再構造類物件
物件的析構順序:(依舊遵循先構造的後析構)
先析構類物件
後析構成員物件
友緣類:(friend class 類名)
允許自己定義的友緣類訪問自己的私有成員
友緣是單向的(類a可以將類b定義為友緣類,b類可以訪問a類的私有成員,但是如果b類沒有將類a定義問友緣類,a類就不可以訪問b類的私有成員)
如果在外界想要使用乙個類中巢狀的類,就得加上作用域
巢狀的類也會受到作用域的訪問限定
eg:(a類的物件訪問不到b類)
class a}*/
/*類與類之間的關係:
1、巢狀
2、組合
*//*
引用必須初始化,在使用引用的地方都會被替換為指標的解引用,所以引用也得寫在初始化列表中
*/class person
static int _num;//靜態的成員變數,在類外初始化
public:
static int _num;
/* 預設的引數為:person * const this
預設的const 修飾的是 this指標 this指標不可以被修改
被const修飾後為:const person * const this
自己的const修飾的是 *this(this指標指向的成員變數) 成員變數不可以被修改
*/ void show(/*this*/)const // (在成員方法右括號加上「const」後,const會修飾) };
int person::_num = 0;//靜態的成員變數,在類外初始化
int main()
C 物件導向 5 屬性
1 慣用法 屬性開頭字母大寫,字段開頭字母小寫。2 只用set或者只用get就可以定義唯讀或者只寫屬性 只寫的不常見 3 可以為set get設定訪問級別。4 例子,限制非法值的設定。5 net3.x 簡化set get public int age。適合於set get中沒有特殊邏輯 的情況。允許...
c 物件導向基礎5
字串 string 1 字串的不可變性 當給字串重新賦值時,老值沒有被銷毀,而是重新開闢了一塊新的空間去儲存新值 堆中,在棧中位址發生變化重新指向新值所處空間的位址。具體過程請看 相簿中 字串的不可變性 當程式結束後由gc 垃圾 器 掃面整個記憶體,如發現有的空間沒有被指向,則立即把他銷毀。注 當字...
物件導向5
以下不是包裝類 包裝類 nsvalue 是 nsnumber的父類,nsvalue 代表乙個更通用的包裝類,nsnumber是更具體的包裝類,nsnumber主要包括以下三個方法 nsnumber num nsnumber numberwithint 20 nslog d num intvalue ...