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

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

 更新時(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)境搭建請(qǐng)參考下面鏈接:

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

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

HelloWorld

cout 代表輸出<<

cin 代表輸入 >>

endl;代表?yè)Q行,清空緩沖區(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 << "請(qǐng)輸入一個(gè)數(shù)字!" << endl;
 int a;
 cin >> a;
 cout << "你輸入的是" << a << endl;
 return 0;
}

RunCode結(jié)果如下:

請(qǐng)輸入一個(gè)數(shù)字!
2
你輸入的是2

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

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

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

按參數(shù)類型

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

public:
 //無(wú)參構(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é)束后,會(huì)調(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ù),因?yàn)閙ain函數(shù)后面pause暫停,不會(huì)釋放Person的析構(gòu)。

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

RunCode 結(jié)果如下

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

按調(diào)用方式

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

 //括號(hào)法
 // 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ù)不能加()
 //因?yàn)橄旅孢@行代碼編譯器會(huì)認(rèn)為是函數(shù)的聲明,不會(huì)創(chuàng)建對(duì)象
 //Person p4();

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

 // Person(10); //匿名對(duì)象,這行執(zhí)行完畢,立即釋放
 //注意事項(xiàng)2:不要用copy構(gòu)造函數(shù)初始化匿名對(duì)象,編譯器會(huì)認(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)造
}

注意事項(xiàng):

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

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

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

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

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

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

總結(jié)

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

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

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

相關(guān)文章

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

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

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

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

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

    C++隊(duì)列用法實(shí)例

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

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

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

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

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

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

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

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

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

    Qt實(shí)現(xiàn)簡(jiǎn)易QQ聊天界面

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

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

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

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

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

最新評(píng)論

紫阳县| 东平县| 湟源县| 鄯善县| 辛集市| 陆丰市| 陈巴尔虎旗| 玉门市| 北安市| 遂宁市| 崇礼县| 新建县| 浪卡子县| 宁化县| 固始县| 胶州市| 襄城县| 马边| 兴安盟| 鄄城县| 临沧市| 丽水市| 丰宁| 沙田区| 界首市| 乐清市| 太原市| 综艺| 霸州市| 东方市| 平潭县| 四川省| 漠河县| 钟山县| 长宁区| 惠东县| 镇坪县| 东海县| 凌云县| 松江区| 闵行区|