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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

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

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

基礎概念:

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

? ? ? ? 析構函數:析構函數(destruct) 與構造函數相反,當對象結束其生命周期時(例如對象所在的函數已調用完畢),系統自動執行析構函數。析構函數往往用來做“清理善后” 的工作(例如在建立對象時用new開辟了一片內存空間,delete會自動調用析構函數后釋放內存)

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

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

構造函數語法:

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

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

析構函數的語法:

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

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

構造函數的分類及調用:

構造函數實際上總共分為四種:

1.有參構造

2.無參構造

3.普通構造

4.拷貝構造

三種調用:

1.括號法

2.顯示法

3.隱式轉換法

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

析構函數:

析構函數:析構函數(destruct) 與構造函數相反,當對象結束其生命周期時(例如對象所在的函數已調用完畢),系統自動執行析構函數。析構函數往往用來做“清理善后” 的工作(例如在建立對象時用new開辟了一片內存空間,delete會自動調用析構函數后釋放內存)

下篇講!!!!

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

總結

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

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。