C 類和物件(3)

2021-09-11 20:10:06 字數 2753 閱讀 9906

初始化列表是成員或類定義的地方。 初始化列**式:

class date

private:

int _year;

int _month;

int _day;

};

需要注意的幾點:

每個成員變數在初始化列表中只能出現一次(初始化只能初始化一次)

類中包含以下成員時,必須放在初始化列表的位置進行初始化:

class a

private:

int _a;

};class data

private:

int& _ref;//只是宣告,引用要求定義的時候必須初始化,而類的成員變數的定義是在初始化列表

const int _n;

a _a;

};int main()

盡量使用初始化列表進行初始化,因為不管你是否使用初始化列表,對於自定義型別成員變數,一定會優先使用初始化列表初始化。

成員變數在類中的宣告次序就是其在初始化列表中的初始化順序,與其在初始化列表中的先後次序無關。

class array

private:

int* _array;

int _size;

};

使用explicit修飾建構函式,將會禁止單參建構函式的隱式轉換。

class time

time(const time& t)

private:

int _hour;

};int main()

這個關鍵字也僅限於用於單引數的建構函式。

class a

a(const a& a)

static int getn()//沒有this指標

private:

static int n;//n屬於整個類

};int a::n = 0;

a f(a a)

int main()

static特點:

靜態成員為所有類物件所共享,不屬於某個具體的例項

靜態成員變數必須在類外定義,定義時不新增static關鍵字

類靜態成員可用類名::靜態成員或者物件.靜態成員來訪問

靜態成員函式沒有隱含的this指標,不能訪問任何非靜態成員

靜態成員和類的普通成員一樣,也有public、protect、private3種訪問限定符,也可以有返回值,const修飾符等引數

靜態成員函式不能調非靜態成員函式,但是非靜態成員函式可以呼叫類的靜態成員函式。

c++11支援非靜態成員變數在宣告時,直接初始化。

class b

int _b;

};class a

private:

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

//這裡給出的是預設值,如果沒有顯示構造,就使用預設值,但是一旦顯示構造了,就使用初始化列表裡的值(僅限於c++11)

int a = 10;

b b = 20;//單引數的建構函式支援隱式型別的轉換

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

static int n;

};int a::n = 10;

int main()

使用友元函式過載operator<<。

class date

private:

int _year;

int _month;

int _day;

};ostream& operator<<(ostream& out, const date& d)

istream& operator>>(istream& in, date& d)

int main()

友元函式需要注意的幾點:

友元函式可以訪問類的私有成員,但是友元函式不是類的成員函式

友元函式不能使用const修飾,沒有this指標

友元函式可以在類定義的任何地方宣告,不受訪問限定符的限制

乙個函式可以是多個類的友元函式

友元類

class time

private:

int _hour;

int _minute;

int _second;

};class date

void setdate(int hour, int minute, int second)

void print()

private:

int _year;

int _month;

int _day;

time _t;

};int main()

這裡的原則是:我要訪問你的私有成員,就要把我定義為你的友元,這樣我就可以訪問你的私有成員了。

內部類就是在類裡面,再定義乙個類。

class a

{public:

class b//預設b是a的友元類

{ public:

static int j;

void f(const a& a)

{

cout << k << endl;//ok

cout << a.h << endl;//ok

cout特點:c++物件導向的三大特性是:封裝、繼承、多型。

C 類和物件 類和物件

c 中物件的型別稱為類,類代表了某一批物件的共性和特徵,類是物件的抽象,而物件是類的具體例項,類是抽象的,不占用記憶體,而物件是具體的,占用 儲存空間,這點很重要,讀者需要牢記。類是使用者自己指定的型別,如果程式中要用到類型別,必須自己根據需要進行宣告,或者使用別人已設計好的類,c 標準本身並不提供...

C 類和物件(3) this指標

我們在現實中,定義乙個類都是根據乙個需求來定義的。所以先來看乙個常用的日期類 date class date void init int year,int month,int day private 封裝起來不允許隨便修改 int year 年 用 區分成員變數和引數 int month 月 int...

C 語言基礎 3 類和物件

類是建立物件的模板,乙個類可以建立多個物件,每個物件都是類型別的乙個變數 建立物件的過程也叫類的例項化。每個物件都是類的乙個具體例項 instance 擁有類的成員變數和成員函式。乙個簡單的類的定義 class student class是 c 中新增的關鍵字,專門用來定義類。student是類的名...