国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C++ > 正文

淺談c++構造函數問題,初始化和賦值問題

2020-05-23 13:54:48
字體:
來源:轉載
供稿:網友

默認構造函數(就是沒有參數的構造函數)

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();

有一點注意的時候兩者不能同時使用:

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:這個指的是調用的時候不帶參數。

編譯器自動添加默認構造函數的條件:編譯器實現的構造函數其實就是什么都不做

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

2、數據成員中沒有const和reference。--因為要初始化。

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

如果是值的話,那在傳值的時候還要再調一次拷貝構造函數

然后又要傳值,又要再調一次....
然后你就內存不夠,當了

關于賦值==函數和拷貝構造函數的區別:

 

#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;//其實就調用拷貝構造函數return a2;}int main(){ A a(1);fun(a); }

 拷貝構造函數一共調用四次拷貝構造函數。。fun參數傳值一次,a1(i)一次,a2(a1)一次,return的時候構造臨時對象一次

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

總結一句:

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

以上就是小編為大家帶來的淺談c++構造函數問題,初始化和賦值問題全部內容了,希望大家多多支持VEVB武林網~


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 万盛区| 凤阳县| 马尔康县| 莱阳市| 措勤县| 长葛市| 迭部县| 偃师市| 光泽县| 石河子市| 邛崃市| 漾濞| 天长市| 祁连县| 林州市| 阳朔县| 措美县| 丽江市| 东乡族自治县| 九台市| 论坛| 鹤山市| 瑞昌市| 丰县| 剑川县| 商河县| 永丰县| 新兴县| 攀枝花市| 陇南市| 安国市| 揭东县| 浠水县| 米林县| 利川市| 曲麻莱县| 平度市| 射洪县| 河曲县| 岳阳市| 金昌市|