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

c++ 入門——淺析構(gòu)造函數(shù)和析構(gòu)函數(shù)

 更新時間:2020年08月31日 08:44:41   作者:從此啟程  
這篇文章主要介紹了c++ 淺析構(gòu)造函數(shù)和析構(gòu)函數(shù)的相關(guān)資料,幫助大家入門c++ 編程,感興趣的朋友可以了解下

前文回顧

本文檔環(huán)境基于Vscode + GCC + CodeRunner

關(guān)于C++的環(huán)境搭建請參考下面鏈接:

http://www.fzitv.net/article/186542.htm

由于本人具有C#開發(fā)經(jīng)驗,部分相同的知識就不再贅述了。只列一下需要記錄的知識。

HelloWorld

cout 代表輸出<<

cin 代表輸入 >>

endl;代表換行,清空緩沖區(qū)。

#include <iostream>
int main()
{
 std::cout << "Helloworld22222222222!" << std::endl;
 return 0;
}

RunCode結(jié)果如下:

PS E:\LearchC\TestOne> cd "e:\LearchC\TestOne\" ; if ($?) { g++ -fexec-charset=GBK -std=c++11 1-HelloWord.cpp -o a.exe } ; if ($?) { ./a.exe }
Helloworld22222222222!

使用命名空間

#include <iostream>
using namespace std;
int main()
{
 cout << "請輸入一個數(shù)字!" << endl;
 int a;
 cin >> a;
 cout << "你輸入的是" << a << endl;
 return 0;
}

RunCode結(jié)果如下:

請輸入一個數(shù)字!
2
你輸入的是2

構(gòu)造函數(shù)和析構(gòu)函數(shù)

  • 構(gòu)造函數(shù)的作用:用于新建對象的初始化工作。
  • 析構(gòu)函數(shù)的作用:用于在撤銷對象前,完成一些清理工作,比如:釋放內(nèi)存等。

每當(dāng)創(chuàng)建對象時,需要添加初始化代碼時,則需要定義自己的構(gòu)造函數(shù);而對象撤銷時,需要自己添加清理工作的代碼時,則需要定義自己的析構(gòu)函數(shù)。

按參數(shù)類型

  • 無參構(gòu)造函數(shù)
  • 有參構(gòu)造函數(shù)
  • copy構(gòu)造函數(shù)
#include <iostream>
using namespace std;
class Person
{
public:
 int _a;

public:
 //無參構(gòu)造函數(shù)
 Person()
 {
 cout << "Person 構(gòu)造函數(shù)的調(diào)用" << endl;
 }
 //有參構(gòu)造函數(shù)
 Person(int a)
 {
 _a = a;
 cout << "Person構(gòu)造函數(shù)A:" << a << endl;
 }
 Person(const Person &p)
 {
 _a = p._a;
 cout << "PersonCopay構(gòu)造函數(shù)_a:" << _a << endl;
 }
 //析構(gòu)函數(shù)
 ~Person()
 {
 cout << "Person 析構(gòu)函數(shù)的調(diào)用" << endl;
 }
};
void test(){
 Person p1;
}
int main(){
 test();
system("pause");
return 0;
}

RunCode結(jié)果如下:

test方法結(jié)束后,會調(diào)用析構(gòu)函數(shù)。

Person 構(gòu)造函數(shù)的調(diào)用
Person 析構(gòu)函數(shù)的調(diào)用

改變調(diào)用方式,在main里調(diào)用,將只出現(xiàn)調(diào)用構(gòu)造函數(shù),因為main函數(shù)后面pause暫停,不會釋放Person的析構(gòu)。

int main(){
Person p1;
system("pause");
return 0;
}

RunCode 結(jié)果如下

Person 構(gòu)造函數(shù)的調(diào)用

按調(diào)用方式

  • 括號法
  • 顯示調(diào)用
  • 隱式調(diào)用
void test01()
{

 //括號法
 // Person p1; //默認(rèn)
 // Person p2(2); //有參
 // Person p3(p2); //copy構(gòu)造函數(shù)
 // cout << "p2的age:" << p2._a << endl;
 // cout << "p3的age:" << p3._a << endl;

 //調(diào)用默認(rèn)函數(shù)不能加()
 //因為下面這行代碼編譯器會認(rèn)為是函數(shù)的聲明,不會創(chuàng)建對象
 //Person p4();

 //顯示法
 // Person p1;
 // Person p2 = Person(10);
 // Person p3 = Person(p2);

 // Person(10); //匿名對象,這行執(zhí)行完畢,立即釋放
 //注意事項2:不要用copy構(gòu)造函數(shù)初始化匿名對象,編譯器會認(rèn)為Person (p3)==Person p3;
 //Person(p3);
 //cout << "P2-Age:" << p3._a << endl;

 //隱式轉(zhuǎn)換法
 Person p1 = 10; //相當(dāng)于寫了Person p1=Person(10)
 Person p2 = p1; //相當(dāng)于copy構(gòu)造
}

注意事項:

不要用copy構(gòu)造函數(shù)初始化匿名對象;

調(diào)用默認(rèn)函數(shù)不能加();

調(diào)用規(guī)則

默認(rèn)情況下,C++編譯器至少給一個類添加三個函數(shù)
1.默認(rèn)構(gòu)造函數(shù)(無參)
2.默認(rèn)析構(gòu)函數(shù)
3.默認(rèn)拷貝構(gòu)造函數(shù),對屬性進行值拷貝

構(gòu)造函數(shù)調(diào)用規(guī)則如下:

  • 如果用戶定義有參構(gòu)造函數(shù),c++不在提供默認(rèn)無參噶構(gòu)造函數(shù)
  • 如果用戶定義拷貝構(gòu)造函數(shù),c++不會再提供其他構(gòu)造函數(shù)

總結(jié)

第三種隱式轉(zhuǎn)換法,我看的有點頭暈,寫法太多。java和C#在構(gòu)造函數(shù)這塊調(diào)用方法做了簡化,只能用new來創(chuàng)建對象。

正所謂:華山自古一條道,好好的走吧!

以上就是c++ 入門——淺析構(gòu)造函數(shù)和析構(gòu)函數(shù)的詳細(xì)內(nèi)容,更多關(guān)于c++ 構(gòu)造函數(shù)和析構(gòu)函數(shù)的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • C++實現(xiàn)屏幕截圖

    C++實現(xiàn)屏幕截圖

    這篇文章主要為大家詳細(xì)介紹了C++實現(xiàn)屏幕截圖功能,截圖自動保存為png格式文件,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-05-05
  • 詳解C語言的exp()函數(shù)和ldexp()函數(shù)以及frexp()函數(shù)

    詳解C語言的exp()函數(shù)和ldexp()函數(shù)以及frexp()函數(shù)

    這篇文章主要介紹了詳解C語言的exp()函數(shù)和ldexp()函數(shù)以及frexp()函數(shù),注意這三個函數(shù)雖然看起來相似但實際功能卻大相徑庭!需要的朋友可以參考下
    2015-08-08
  • C++隊列用法實例

    C++隊列用法實例

    這篇文章主要介紹了C++隊列用法,實例分析了C++實現(xiàn)隊列的入隊、出隊、讀取與判斷等相關(guān)技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-07-07
  • C++中新手容易犯的十種編程錯誤匯總

    C++中新手容易犯的十種編程錯誤匯總

    一段C語言代碼,在編譯、鏈接和運行的各個階段都可能會出現(xiàn)問題,下面這篇文章主要給大家介紹了關(guān)于C++中新手容易犯的十種編程錯誤的相關(guān)資料,需要的朋友可以參考下
    2021-10-10
  • 深入分析為Visual Assist設(shè)置快捷鍵的方法

    深入分析為Visual Assist設(shè)置快捷鍵的方法

    本篇文章是對為Visual Assist設(shè)置快捷鍵的方法進行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-05-05
  • C++20 特性 協(xié)程 Coroutines(1)

    C++20 特性 協(xié)程 Coroutines(1)

    這篇文章主要給大家分享得是C++20 得特性 協(xié)程 Coroutines,下面文章內(nèi)容我們將來具體介紹什么是協(xié)程,協(xié)程得好處等知識點,需要的朋友可以參考一下
    2021-10-10
  • C語言+win32api寫窗體應(yīng)用程序

    C語言+win32api寫窗體應(yīng)用程序

    本文給大家分享的是個人使用純C語言結(jié)合win32api制作窗體應(yīng)用程序的代碼,非常的簡單,給需要的小伙伴參考下。
    2016-02-02
  • Qt實現(xiàn)簡易QQ聊天界面

    Qt實現(xiàn)簡易QQ聊天界面

    這篇文章主要為大家詳細(xì)介紹了Qt實現(xiàn)簡易QQ聊天界面,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-06-06
  • C++實現(xiàn)strcpy函數(shù)實例

    C++實現(xiàn)strcpy函數(shù)實例

    這篇文章主要介紹了C++實現(xiàn)strcpy函數(shù)實例,步驟講解的很詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,感興趣的朋友跟隨小編一起來研究吧
    2020-12-12
  • C++實現(xiàn)LeetCode(141.單鏈表中的環(huán))

    C++實現(xiàn)LeetCode(141.單鏈表中的環(huán))

    這篇文章主要介紹了C++實現(xiàn)LeetCode(141.單鏈表中的環(huán)),本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-07-07

最新評論

方正县| 宁城县| 呼伦贝尔市| 博白县| 岗巴县| 阜宁县| 合水县| 江陵县| 瓦房店市| 会东县| 唐山市| 左权县| 盐城市| 卢氏县| 广水市| 鹤峰县| 普定县| 红安县| 崇左市| 砀山县| 哈巴河县| 中西区| 清流县| 喀喇沁旗| 达拉特旗| 弥勒县| 墨竹工卡县| 昌黎县| 温宿县| 随州市| 牟定县| 沅江市| 阿瓦提县| 安西县| 金堂县| 蕲春县| 皮山县| 襄垣县| 耒阳市| 廉江市| 灌阳县|