過載 初始化列表 友元

2021-07-13 23:54:12 字數 1122 閱讀 8207

1、函式過載(overload):在同一作用域中,函式名相同,引數列表不同,則多個函式形成過載

引數列表不通:引數型別不同或者個數不同

cpoint(float _x = 0, _y = 0); //建構函式宣告

//預設例項化物件在沒有賦值情況下x = 0,y = 0,因此在用此函式時,不能定義無參構造 函式,以免產生二義性;

cpoint::cpoint(float _x ,float _y)      //建構函式原型

2、初始化列表:初始化成員變數

例:  cpoint();cpoint  c; 則x =

0; y =

0;cpoint::cpoint()l:x(0),y(0) //x(0) == x = _x;

cpoint(float _x,float _y) => cpoint::cpoint(float _x,float _y):x(_x),y(_y) {}

初始化列表方式用:開始,成員之間用,隔開

⚠️:初始化列表只能出現在建構函式處,(具體:建構函式頭之後緊接著冒號開頭之後,後面緊跟函式體)

有四種情況必須使用初始化列表:

1)const成員變數

例:point::point():x(120){} // x 為const int 型別

point::point(int _x,int _y):x(_x)

2)引用型別的成員變數

3)沒有預設建構函式的類型別成員變數(組合)

4)繼承中,基類部分的初始化

3、復合類(組合類):乙個類的成員變數(屬性)是另外乙個類的物件,那麼前者被稱為復合類。

⚠️:組合類中的構造函式呼叫(先呼叫屬性物件的『建構函式』,再初始化另外部分)

友元函式和友元類

1、友元:可以直接訪問私有成員(破壞了資料安全)

2、友元函式:friend、不是成員函式,可以直接訪問類的私有成員的非成員函式

函式呼叫:

普通函式:函式名

成員函式:物件.函式名

3、友元類:friend

如果類a是類b的友元類,那麼a中的所有成員函式都是類b的友元函式

初始化 1 預設初始化 列表初始化

初始化的基本概念 事實 初始化和賦值是兩個完全不同的操作。初始化,是建立變數時賦予其乙個初始值。賦值,是把物件的當前值擦除,用乙個新值代替。列表初始化 p39 作為c 11新標準的一部分,用花括號 來初始化變數得到了全面應用。出於某些原因,這種初始化的方式叫做列表初始化。現在,無論是初始化物件還是某...

初始化列表

與其他函式不同,建構函式除了有名字,引數列表和函式體之外,還可以有初始化列表,初始化列表以冒號開頭,後跟一系列以逗號分隔的初始化字段。在c 中,struct和class的唯一區別是預設的克訪問性不同,而這裡我們不考慮訪問性的問題,所以下面的 都以struct來演示。struct foo 初始化列表 ...

初始化列表

初始化列表一般用於建構函式賦值的操作中,它的常用賦值物件有 1 常量 常資料成員只能用初始化列表來初始化 2 引用型別 3 無參建構函式的類的物件。具體格式為 類名 形參表 如int x,int y 成員資料 x 成員資料 y 意思是成員資料繫結x,y。下面以幾個例子來說明一下 一 求圓面積 inc...