日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

不存在从node到node*的适当转换函数_C++构造函数和初始化表

發布時間:2024/9/3 c/c++ 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 不存在从node到node*的适当转换函数_C++构造函数和初始化表 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

構造函數和初始化表

1 構造函數

當類對象被創建時,編譯系統對象分配內存空間,并自動調用該構造函數,由構造函數完成成員的初始化工作,因此構造函數的作用是初始化對象的數據成員。

2 構造函數可以重載

構造函數通過參數表的差別化可以形成重載,創建對象時通過構造函數實參的類型選擇匹配,表示不同的對象創建方式。

3 缺省構造函數 (無參構造函數)

1)如果一個類沒有定義構造函數,系統 (編譯器) 會提供一個缺省的構造函數 (無參構造函數),使成員變量獲得定義(分配內存)。

2)對于基本類型的成員變量不做初始化。

3)對類 類型的成員變量,用相應類型的無參構造函數初始化。

C/C++學習交流群點擊加入

class A{
public:
A (void) { num = 0; }
int num;
};
class B{
public:
A a;
int i;
};
int main(){
B b;
cout << b.i << endl; //不確定值
cout << b.a.num << endl; //0
}

4)如果一個類定義了構造函數,無論是否有參數,系統都不會再提供缺省(無參)構造函數。

4 類型轉換構造函數(單參構造函數)

class A{
public:
A(int i = 0){ //類型轉換構造函數
num = i;
}
int num;
};
int main(void){
A a;
a = 100;//a = A(100)
}

使用 explicit 關鍵字修飾類型轉換構造函數,可以強制這種轉換必須顯示的進行,禁止隱式類型轉換。

class A{
public:
explicit A(int i = 0){//類型轉換構造函數
num = i;
}
int num;
};
int main(void){
A a;
a = 100; // error,不能在做隱式轉換
a = A(100); // 必須顯示轉換
}

5 拷貝構造函數

1)用一個已經存在對象構造同類型的副本對象,會調用該類的拷貝構造函數。

類名 (const 類名& that) {...}

class A{
public:
A(const A& that){
num = that.num;
}
int num;
};
A a1;
A a2 = a1; // 等價 ==> A a2(a1),調用拷貝構造函數C/C++學習交流群:點擊加入

2)缺省拷貝構造函數

如果一個類沒有定義拷貝構造函數,那么編譯器會為其提供一個缺省的拷貝構造函數

a)對基本類型成員變量,按字節復制。

b)對類 類型的成員量,調用相應類型的拷貝構造函數

注:一般不需要自己定義拷貝構造函數,因為缺省拷貝構造已經很好用了。

3)拷貝構造函數調用的時機

a. 用已經存在對象作為同類型對象的構造實參

b. 以對象的形式向函數傳遞參數

class A{...};
void func(A a){..};
int main(void){
A a;
func(a);
}

c.從函數中返回對象

A foo(A a){
return a;
}

4)系統提供構造函數時機

只要自己編譯構造函數,系統就不會提供默認構造函數;自己編寫拷貝函數,系統不會提供默認拷貝函數。

6 初始化表

1)指明類中成員變量初始化方式,語法格式:

class 類名{

類名 (形參表) : 成員變量 1(參數 1),成員變量 2(參數 2).. {}

};

class A{
/*A(int a,int b){
m_a = a;
m_b = b;
}*/
A(int a, int b):m_a(a), m_b(b){}
A(void):m_a(0),m_b(0){}
int m_a;
int m_b;
};

2)必須顯示使用初始化表的地方

a. 如果有類 類型的成員變量,而該類又沒有無參構造函數,則必須通過初始化表初始化該成員變量(成員子對象)。

b. 類中包含"const"或"引用&"成員變量,必須在初始化表中顯示的初始化。

c. 成員變量初始化順序由聲明順序決定,而與初始化表的順序無關;

與50位技術專家面對面20年技術見證,附贈技術全景圖

總結

以上是生活随笔為你收集整理的不存在从node到node*的适当转换函数_C++构造函数和初始化表的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。