1.建構函式的初始化
#include
using namespace std;
class student
private:
int _id;
int _name;
};
對於上面這個類來說,呼叫建構函式的時候,物件中已經有了乙個類的初始值。但是不能將其當作類物件成員的初始化,建構函式體內的語句只能將其稱作賦初值,而不能將其稱作初始化,因為初始化只能初始化一次,而建構函式內部可以多次賦值#include
using namespace std;
class student
private:
int _id;
int _name;
};
初始化列表:以乙個冒號開始,接著是乙個以逗號進行分隔的資料列表,每個成員變數上跟乙個放在括號內部的初始值或者表示式。
注意:每個成員變數在初始化列表中只能初始化一次。
如果類中包含(引用成員變數,const成員變數,類型別成員)必須在初始化列表的位置進行初始化
盡量使用初始化列表初始化,因為不管你是否使用初始化列表,對於自定義型別成員變數,一定會先使用初始化列表初始化。
成員變數在類中宣告次序就是其在初始化列表中的初始化順序,與其在初始化列表中的先後次序無關
2.explicit關鍵字
c++中的explicit關鍵字只能用於修飾只有乙個引數的類建構函式, 它的作用是表明該建構函式是顯示的, 而非隱式的, 跟它相對應的另乙個關鍵字是implicit, 意思是隱藏的,類建構函式預設情況下即宣告為implicit(隱式).
#includeusing namespace std;
class student
private:
int _id;
};int main()
用explicit修飾建構函式,將會禁止單參建構函式的隱式型別轉換。
3.static成員
1.概念:
宣告為static的類成員稱為類的靜態成員,用static修飾的成員變數,稱之為靜態成員變數;用static修飾的成員函式,稱之為靜態成員函式。靜態的成員變數一定要在類外進行初始化。
2.特性
靜態成員為所有類物件所共享,不屬於某個具體的例項
靜態成員變數必須在類外定義,定義時不新增static關鍵字
類靜態成員即可用類名::靜態成員或者物件.靜態成員來訪問
靜態成員函式沒有隱藏的this指標,不能訪問任何非靜態成員
靜態成員和類的普通成員一樣,也有public、protected、private 3種訪問級別,也可以具有返回值,const修飾符等引數
4.友元
友元分為:友元函式和友元類
1.友元函式
class student
ostream& operator<<
(ostream& _cout,
const student& d)
private:
int _id;};
intmain()
友元函式可以直接訪問類的私有成員,它是定義在類外部的普通函式,不屬於任何類,但需要在類的內部宣告,宣告時需要加friend關鍵字。
注意:友元函式可訪問類的私有成員,但不是類的成員函式
友元函式不能用const修飾
友元函式可以在類定義的任何地方宣告,不受類訪問限定符限制
乙個函式可以是多個類的友元函式
友元函式的呼叫與普通函式的呼叫和原理相同
2.友元類
友元類的所有成員函式都可以是另乙個類的友元函式,都可以訪問另乙個類的非公有成員。
類和物件(下)
1.什麼是建構函式 建構函式是一種隨著物件建立而被呼叫的公有成員函式,有且僅在定義物件時自動執行一次,它的主要用途是為物件做初始化。2.建構函式的特點 3.初始化列表 格式 以乙個冒號開始,接著是乙個逗號分割的資料成員列表,每個 成員變數 後面跟乙個放在括號中的初始值或表示式。注意點 1.每個成員在...
類和物件(下)
1.建構函式體賦值 因為初始化初始化一次而建構函式可以進行多次賦值,所以不能稱為初始化。2.初始化列表 以乙個冒號開始,接著是乙個以逗號分隔的資料成員列表,每個 成員變數 後面跟乙個放在括 號中的初始值或表示式 1 每個變數在初始化列表中只能出現一次 2 類中包含以下成員,必須放在初始化列表位置進行...
C 類和物件(下)
2.static成員 3.c 11的成員初始化新玩法 4.友元 5.內部類 如下 class date private int year int month int day 如下 class date private int year int month int day 無explicit 如下 c...