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