最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

淺談c++構(gòu)造函數(shù)問題,初始化和賦值問題

 更新時間:2016年12月31日 09:19:46   投稿:jingxian  
下面小編就為大家?guī)硪黄獪\談c++構(gòu)造函數(shù)問題,初始化和賦值問題。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

默認(rèn)構(gòu)造函數(shù)(就是沒有參數(shù)的構(gòu)造函數(shù))

The Default Constructor
The default constructor is the constructor used to create an object when you don't provide explicit initialization values. That is, it's the constructor used for declarations like this:

Stock stock1;  // uses the default constructor

1、由編譯器自動生成

2、由我們自己定義的

這里又有兩種情況

上面說了啊,default constructor有兩種(……your own default constructor. This is a constructor that takes no arguments):

1)One is to provide default values for all the arguments to the existing constructor:

Stock(const char * co = "Error", int n = 0, double pr = 0.0);

2)The second is to use function overloading to define a second constructor, one that has no arguments:
Stock();

有一點(diǎn)注意的時候兩者不能同時使用:

You can have only one default constructor, so be sure that you don't do both. (With early versions of C++, you could use only the second method for creating a default constructor.)

This is a constructor that takes no arguments:這個指的是調(diào)用的時候不帶參數(shù)。

編譯器自動添加默認(rèn)構(gòu)造函數(shù)的條件:編譯器實(shí)現(xiàn)的構(gòu)造函數(shù)其實(shí)就是什么都不做

1.沒有任何自己定義的構(gòu)造函數(shù)(即便是復(fù)制構(gòu)造函數(shù)也不行,如果自己定義復(fù)制構(gòu)造函數(shù),則必須自己定義構(gòu)造函數(shù))

2、數(shù)據(jù)成員中沒有const和reference。--因?yàn)橐跏蓟?/p>

拷貝構(gòu)造函數(shù)的參數(shù)必須是引用的原因:拷貝構(gòu)造函數(shù)的參數(shù)使用引用類型不是為了減少一次內(nèi)存拷貝, 而是避免拷貝構(gòu)造函數(shù)無限制的遞歸下去。

如果是值的話,那在傳值的時候還要再調(diào)一次拷貝構(gòu)造函數(shù)

然后又要傳值,又要再調(diào)一次....
然后你就內(nèi)存不夠,當(dāng)了

關(guān)于賦值==函數(shù)和拷貝構(gòu)造函數(shù)的區(qū)別:

 

#include<iostream>
using namespace std;
class A
{ public:
int i;
A( const A& a)
{ i=a.i;
cout<<"copy is build"<<endl;
}
explicit A(int y)
{ i=y;
}
};
A fun(A i)
{ A a1(i);
 A a2=a1;//其實(shí)就調(diào)用拷貝構(gòu)造函數(shù)
return a2;
}


int main()
{ A a(1);
fun(a);
 

}

 拷貝構(gòu)造函數(shù)一共調(diào)用四次拷貝構(gòu)造函數(shù)。。fun參數(shù)傳值一次,a1(i)一次,a2(a1)一次,return的時候構(gòu)造臨時對象一次

如果函數(shù)返回對象,而不是指針,那么在執(zhí)行return的時候,會使用被return的對象“復(fù)制構(gòu)造”臨時對象,然后,return語句執(zhí)行完畢(遇到分號;了)函數(shù)內(nèi)部創(chuàng)建的全部變量析構(gòu)、出棧。而被“賦值構(gòu)造”的臨時對象則在調(diào)用該函數(shù)的語句執(zhí)行完畢(遇到分號;或者右邊的大括號})后,析構(gòu)。

總結(jié)一句:

臨時變量的生存范圍是語句級——分號;結(jié)束或者右邊的大括號}結(jié)束。語句結(jié)束之后,臨時變量就被析構(gòu)了~

以上就是小編為大家?guī)淼臏\談c++構(gòu)造函數(shù)問題,初始化和賦值問題全部內(nèi)容了,希望大家多多支持腳本之家~

相關(guān)文章

  • c++ stack容器適配器的使用

    c++ stack容器適配器的使用

    在C++中,std::stack是一個標(biāo)準(zhǔn)模板庫中的容器適配器,它提供了一種后進(jìn)先出的數(shù)據(jù)結(jié)構(gòu),本文主要介紹了c++ stack容器適配器的使用,具有一定的參考價值,感興趣的可以了解一下
    2024-05-05
  • C++編輯距離(動態(tài)規(guī)劃)

    C++編輯距離(動態(tài)規(guī)劃)

    這篇文章主要介紹了C++編輯距離(動態(tài)規(guī)劃),編輯距離是指兩個字符串之間,由一個轉(zhuǎn)成另一個所需的最少編輯操作次數(shù),限免詳細(xì)內(nèi)容,需要的小伙伴可以參考一下
    2022-01-01
  • C語言圖文并茂講解分支語句用法

    C語言圖文并茂講解分支語句用法

    分支結(jié)構(gòu)的執(zhí)行是依據(jù)一定的條件選擇執(zhí)行路徑,而不是嚴(yán)格按照語句出現(xiàn)的物理順序。分支結(jié)構(gòu)的程序設(shè)計方法的關(guān)鍵在于構(gòu)造合適的分支條件和分析程序流程,根據(jù)不同的程序流程選擇適當(dāng)?shù)姆种дZ句
    2022-04-04
  • C++中動態(tài)綁定和內(nèi)存管理的實(shí)現(xiàn)

    C++中動態(tài)綁定和內(nèi)存管理的實(shí)現(xiàn)

    本文主要介紹了C++中動態(tài)綁定和內(nèi)存管理的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-12-12
  • C++實(shí)現(xiàn)LeetCode(648.替換單詞)

    C++實(shí)現(xiàn)LeetCode(648.替換單詞)

    這篇文章主要介紹了C++實(shí)現(xiàn)LeetCode(648.替換單詞),本篇文章通過簡要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-08-08
  • C++?中的?JSON?序列化和反序列化及結(jié)構(gòu)體與枚舉類型的處理方法

    C++?中的?JSON?序列化和反序列化及結(jié)構(gòu)體與枚舉類型的處理方法

    在?C++?編程中,處理?JSON?數(shù)據(jù)是一項(xiàng)常見任務(wù),特別是在需要與其他系統(tǒng)或前端進(jìn)行數(shù)據(jù)交換時,本文將詳細(xì)介紹如何使用?nlohmann::json?庫對結(jié)構(gòu)體和枚舉類型進(jìn)行序列化和反序列化,感興趣的朋友一起看看吧
    2024-11-11
  • C++11新特性“=default”,“=delete”的使用

    C++11新特性“=default”,“=delete”的使用

    =default、=delete 是C++11的新特性,分別為:顯式缺省(告知編譯器生成函數(shù)默認(rèn)的缺省版本)和顯式刪除(告知編譯器不生成函數(shù)默認(rèn)的缺省版本),本文就來介紹一下如何使用
    2021-05-05
  • 利用C語言實(shí)現(xiàn)三子棋游戲

    利用C語言實(shí)現(xiàn)三子棋游戲

    這篇文章主要為大家詳細(xì)介紹了利用C語言實(shí)現(xiàn)三子棋游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-02-02
  • C語言的分支和循環(huán)語句你真的了解嗎

    C語言的分支和循環(huán)語句你真的了解嗎

    這篇文章主要為大家詳細(xì)介紹了C語言的分支和循環(huán)語句,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-02-02
  • C++深入了解模板的使用

    C++深入了解模板的使用

    這篇文章主要介紹了C++中模板(Template)的詳解及其作用介紹,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-06-06

最新評論

礼泉县| 潜江市| 泾川县| 紫阳县| 敦化市| 乌什县| 天等县| 迁安市| 郯城县| 海伦市| 德清县| 二手房| 临安市| 武城县| 阿勒泰市| 子长县| 防城港市| 逊克县| 长治县| 景东| 绍兴市| 惠安县| 新晃| 白玉县| 翁牛特旗| 开封市| 道真| 赤壁市| 镇沅| 大港区| 香格里拉县| 江陵县| 缙云县| 河北省| 巨鹿县| 泰顺县| 科技| 东丰县| 雷山县| 仁寿县| 闸北区|