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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

对象特性-构造函数和析构函数

發(fā)布時間:2023/11/27 生活经验 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 对象特性-构造函数和析构函数 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

基礎(chǔ)概念:

????????構(gòu)造函數(shù)是一種特殊的方法。主要用來在創(chuàng)建對象時初始化對象,即為對象成員變量賦初始值,總與new運算符一起使用在創(chuàng)建對象的語句中。特別的一個類可以有多個構(gòu)造函數(shù) ,可根據(jù)其參數(shù)個數(shù)的不同或參數(shù)類型的不同來區(qū)分它們 即構(gòu)造函數(shù)的重載

? ? ? ? 析構(gòu)函數(shù):析構(gòu)函數(shù)(destruct) 與構(gòu)造函數(shù)相反,當(dāng)對象結(jié)束其生命周期時(例如對象所在的函數(shù)已調(diào)用完畢),系統(tǒng)自動執(zhí)行析構(gòu)函數(shù)。析構(gòu)函數(shù)往往用來做“清理善后” 的工作(例如在建立對象時用new開辟了一片內(nèi)存空間,delete會自動調(diào)用析構(gòu)函數(shù)后釋放內(nèi)存)

我相信大家對于上面的哪些個解釋都懶得看.

說白了構(gòu)造函數(shù)就是給類的對象賦值,析構(gòu)函數(shù)就是用來清理善后的操作(例如在建立對象時用new開辟了一片內(nèi)存空間,delete會自動調(diào)用析構(gòu)函數(shù)后釋放內(nèi)存(這些后幾篇博客會介紹到))

構(gòu)造函數(shù)語法:

? ? ? ? ? ? ? ? 類名() {}

  1. 構(gòu)造函數(shù),沒有返回值也不寫void
  2. 函數(shù)名稱與類名相同
  3. 構(gòu)造函數(shù)可以有參數(shù),因此可以發(fā)生重載
  4. 程序在調(diào)用對象時候會自動調(diào)用構(gòu)造,無須手動調(diào)用,而且只會調(diào)用一次

析構(gòu)函數(shù)的語法:

? ? ? ? ? ? ? ? ~類名() {}? ? ? ? ? ??

  1. 析構(gòu)函數(shù),沒有返回值也不寫void
  2. 函數(shù)名稱與類名相同,在名稱前加上符號 ~
  3. 析構(gòu)函數(shù)不可以有參數(shù),因此不可以發(fā)生重載
  4. 程序在對象銷毀前會自動調(diào)用析構(gòu),無須手動調(diào)用,而且只會調(diào)用一次
#include<iostream>
using namespace std;class Person
{
public:Person()      //構(gòu)造函數(shù){cout << "構(gòu)造函數(shù)的調(diào)用" << endl;}~Person()        //析構(gòu)函數(shù)“~”是ESC鍵下面那塊{cout << "析構(gòu)函數(shù)的調(diào)用" << endl;}
};void test()
{Person p;
}int main()
{test();system("pause");return 0;
}

構(gòu)造函數(shù)的分類及調(diào)用:

構(gòu)造函數(shù)實際上總共分為四種:

1.有參構(gòu)造

2.無參構(gòu)造

3.普通構(gòu)造

4.拷貝構(gòu)造

三種調(diào)用:

1.括號法

2.顯示法

3.隱式轉(zhuǎn)換法

#include<iostream>
using namespace std;class Person
{
public:Person()    //無參(默認(rèn))構(gòu)造函數(shù){cout << "無參構(gòu)造函數(shù)的調(diào)用" << endl;}Person(int a)         //有參構(gòu)造函數(shù){p_age = a;cout << "有參構(gòu)造函數(shù)的調(diào)用" << endl;}Person(const Person& p)  //拷貝函數(shù){cout << "拷貝函數(shù)的調(diào)用" << endl;}~Person()        //析構(gòu)函數(shù)“~”是ESC鍵下面那塊{cout << "析構(gòu)函數(shù)的調(diào)用" << endl;}private:int p_age;
};void test()
{//括號法Person p1;    //無參(默認(rèn))Person p2(18);   //有參調(diào)用-->括號法Person p3 = Person(p2);  //拷貝函數(shù)的調(diào)用cout << "------------------------" << endl;//顯示法Person p4;Person p5 = Person(18);  //這塊單獨給Person(18)單獨提出來 就是匿名的,因為還沒有而名字  這里拿一個Person類的p5來接收Person p6 = Person(p5);  cout << "------------------------" << endl;//注意事項:不要拿拷貝函數(shù)來構(gòu)造一個函數(shù) 初始化匿名對象//例如:Person(p3);這樣的話  編譯器會認(rèn)為這個Person(p3) ==> Person p3  這樣的話會和上面那個報錯為:重定義p3//隱式法Person p7 = 18; //相當(dāng)于Person p7 = Person(18);  -->有參構(gòu)造Person p8 = p7;  //拷貝構(gòu)造cout << "------------------------" << endl;}int main()
{test();system("pause");return 0;
}

析構(gòu)函數(shù):

析構(gòu)函數(shù):析構(gòu)函數(shù)(destruct) 與構(gòu)造函數(shù)相反,當(dāng)對象結(jié)束其生命周期時(例如對象所在的函數(shù)已調(diào)用完畢),系統(tǒng)自動執(zhí)行析構(gòu)函數(shù)。析構(gòu)函數(shù)往往用來做“清理善后” 的工作(例如在建立對象時用new開辟了一片內(nèi)存空間,delete會自動調(diào)用析構(gòu)函數(shù)后釋放內(nèi)存)

下篇講!!!!

Life was like a box of chocolates, you never know what you're going to get.

總結(jié)

以上是生活随笔為你收集整理的对象特性-构造函数和析构函数的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。