初始化列表是成員或類定義的地方。 初始化列**式:
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是類的名...