1. 轉(zhuǎn)換函數(shù)
- 若要將單個值轉(zhuǎn)換為類類型,則需要創(chuàng)建對應(yīng)的類構(gòu)造函數(shù),其原型大致如下:
c_name(type_name value)
其中,c_name為類名,type_name是要轉(zhuǎn)換的類型名稱。( 注: 在使用的時候要注意隱式轉(zhuǎn)換可能帶來的誤解和錯誤,恰當?shù)氖褂胑xplicit,防止其被用于隱式轉(zhuǎn)換)
- 若要將類轉(zhuǎn)換為其他類型,則需要創(chuàng)建類轉(zhuǎn)換成員函數(shù),其原型大致如下:
operator type_name()
雖然該函數(shù)沒有聲明返回類型,但需要在函數(shù)實現(xiàn)的的最后返回所需類型的值。
2. 嵌套結(jié)構(gòu)和類
在類聲明中聲明的結(jié)構(gòu)、類或枚舉,它們的作用域為整個類。這種聲明不會創(chuàng)建數(shù)據(jù)對象,而只是指定了可以在類中使用的類型。如果聲明是在私有部分進行的,那么只能在這個類中使用。如果是在公部分聲明的,則該結(jié)構(gòu)不僅可以在類中使用,而且還可以通過類名::嵌套結(jié)構(gòu)
的方式在類的外面使用。
3. 成員初始化列表
對于類Queue,
class Queue
{
public:
const int qsize;
int num;
}
在編寫Queue構(gòu)造函數(shù)的時候,由于qsize是常量,所以只能對其進行初始化,但不能對其進行賦值,從概念上來說,在調(diào)用構(gòu)造函數(shù)的時候,對象是在構(gòu)造函數(shù)括號中代碼執(zhí)行之前就被創(chuàng)建,因此,對于const數(shù)據(jù)成員,必須在執(zhí)行到構(gòu)造函數(shù)體之前,即創(chuàng)建對象的時進行初始化。c++提供了一個特殊的語法來完成上述工作,即成員初始化列表。
成員初始化列表由逗號分隔的初始化列表組成(前面帶冒號)。它位于參數(shù)列表的右括號之后、函數(shù)體左括號之前。對于Queue其構(gòu)造函數(shù)可寫為:
Queue::Queue(int qs):qsize(qs)
{
num = 0;
}
//或者
Queue::Queue(int qs):qsize(qs),num(0) //初始化列表也適用于普通的數(shù)據(jù)成員
{
}
對于被聲明為引用的類成員,也只能使用類成員初始化列表的方法進行初始化。
注 :不能將成員初始化列表用于構(gòu)造函數(shù)之外的其他類方法。
4. 類內(nèi)初始化
c++11允許類內(nèi)初始化,即在類定義中進行初始化。
例如:
class Queue
{
private:
...
Node * front = NULL;
enum {Q_SIZE = 10};
Node * rear = NULL;
int items = 0;
const int qsize = Q_SIZE;
}
這與使用成員初始化列表等價,然而,使用成員初始化列表的構(gòu)造函數(shù)將覆蓋相應(yīng)的類內(nèi)初始化。
-
轉(zhuǎn)換器
+關(guān)注
關(guān)注
27文章
8694瀏覽量
147086 -
Queue
+關(guān)注
關(guān)注
0文章
16瀏覽量
7261 -
C++語言
+關(guān)注
關(guān)注
0文章
147瀏覽量
6989
發(fā)布評論請先 登錄
相關(guān)推薦
評論