C 類與物件 3

2021-09-24 02:49:20 字數 2757 閱讀 6075

再學建構函式

建構函式體賦值

先構造乙個帶有全預設的日期類

class date

private:

int _year;

int _month;

int _day;

};

上述構造函式呼叫之後,物件中已經有了乙個初始值,但是不能將其稱作為類物件成員的初始化,構造函式體中的語句只能將其稱作為賦初值,而不能稱作初始化。因為初始化只能初始化一次,而建構函式體內可以多次賦值。初始化列表

class date

private:

int _year;

int _month;

int _day;

};

初始化列表以:開始,接著用乙個,分隔的資料成員列表,每個「成員變數」後面跟乙個放在括號內的初始值或者表示式注意事項:1、每個成員變數在初始化列表中只出現一次(初始化只能初始化一次)

2、類中的成員:「引用成員變數」,「const成員變數」,「類型別成員(該類沒有預設建構函式)」

class skr

private:

int _a;

};class cxk

private:

skr _aobj;

int& _ref;

const int _n;

}

3、盡可能使用初始化列表初始化,因為不管你是否使用初始化列表,對於自定義型別成員變數,一定會先使用初始化列表初始化。

class time

private:

int _hour;

};class date

private:

int _day;

time _t;

};int main()

列印結果如圖

4、成員變數初始化列表的順序按照在類中宣告成員變數的順序,與初始化列表的順序無關

class array

private:

int* _array;

int _size;

};

explicit關鍵字

用explicit修飾建構函式,將會禁止單個引數的建構函式的隱式轉換

static成員

宣告為static的類成員稱為類的靜態成員,用static修飾的成員變數,稱之為靜態成員變數;

用static修飾的成員函式,稱之為靜態成員函式。靜態的成員變數一定要在類外進行初始化

#include using  namespace std;

class a

a(const a& t)

static int getacount()

private:

static int _scount;

};

int a::_scount = 0;

void testa()

private:

// 非靜態成員變數,可以在成員宣告時,直接初始化。

int a = 10;

b b = 20;

int* p = (int*)malloc(4);

static int n;

};

友元

友元函式

在過載運算子中,我們沒辦法將operator《過載成員成員函式。因為cout的輸出流物件和隱含的this指標在搶占第乙個引數位置。this指標預設是第乙個引數也就是左運算元了。但是實際中使用cout需要是第乙個形參物件,才能正常使用。所以我們要將operator《過載成全域性函式。但是這樣的話,又會導致類外沒有辦法訪問成員,那麼這裡就需要友元來解決了。operator同理。

友元函式可以直接訪問類的私有成員,它是定義在類外部的普通函式,不屬於任何類,但需要在類的內部宣告,宣告時需要加friend關鍵字。

#include using namespace std;    

class date

private:

int _year;

int _month;

int _day;

}; ostream& operator<

int main()

};int sum_solution(int n)

static size_t _sum;

static size_t _i;

}; size_t solution::_sum = 0;

size_t solution::_i = 0;

類與物件3

編寫乙個類定義形式的結構體變數people。該結構體變數包括資料成員有年齡 age 身高 height 體重 weight 函式成員有進食 eating 運動 sporting 睡眠 sleeping 在主函式中通過結構體變數訪問類的所有成員。includeusing namespace std s...

實驗3 類與物件

part2 ifndef graph h define graph h 類graph的宣告 class graph endif graph.h 類graph的實現 include graph.h include using namespace std 帶引數的建構函式的實現 graph graph ...

C 類和物件(3)

初始化列表是成員或類定義的地方。初始化列 式 class date private int year int month int day 需要注意的幾點 每個成員變數在初始化列表中只能出現一次 初始化只能初始化一次 類中包含以下成員時,必須放在初始化列表的位置進行初始化 class a privat...