国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

C++初階——構造和析構函數(shù)

這篇具有很好參考價值的文章主要介紹了C++初階——構造和析構函數(shù)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

目錄

1. 我們在經(jīng)常忘記寫或者調(diào)用初始化函數(shù)使得棧類中的變量是隨機值,易出錯有時忘記調(diào)用銷毀函數(shù),導致內(nèi)存泄漏

2.構造函數(shù)

2.2 構造函數(shù)的特性

3. 析構函數(shù)

3.1 概念

3.2 特性

3.3 深入了解?


1. 我們在經(jīng)常忘記寫或者調(diào)用初始化函數(shù)使得棧類中的變量是隨機值,易出錯有時忘記調(diào)用銷毀函數(shù),導致內(nèi)存泄漏

這里就引出了構造和析構函數(shù)

2.構造函數(shù)

2.1 特性:

  • 函數(shù)名與類名相同
  • 無返回值
  • 對象實例化時自動調(diào)用對應的構造函數(shù)
  • 構造函數(shù)可以重載

這里我們注意一下:

構造函數(shù)是特殊的成員函數(shù)不能將它與普通函數(shù)對比

構造函數(shù)的任務是初始化對象而不是開辟空間創(chuàng)造對象

class Date
{
public:
void Init(int year, int month, int day)
{

    _year = year;
    _month = month;
    _day = day;
}
void Print()
{
    cout << _year << "-" << _month << "-" << _day << endl;
}
private:
    int _year;
    int _month;
    int _day;
};
int main()
{
    Date d1;
    d1.Init(2022, 7, 5);
    d1.Print();

    Date d2;
    d2.Init(2022, 7, 6);
    d2.Print();
  return 0;
}

構造函數(shù)是一個特殊的成員函數(shù),名字與類名相同,創(chuàng)建類類型對象時由編譯器自動調(diào)用,以保證
每個數(shù)據(jù)成員都有 一個合適的初始值,并且在對象整個生命周期內(nèi)只調(diào)用一次

?

2.2 構造函數(shù)的特性

構造函數(shù)是一個特殊的成員函數(shù),名字與類名相同,創(chuàng)建類類型對象時由編譯器自動調(diào)用,以保證
每個數(shù)據(jù)成員都有 一個合適的初始值,并且在對象整個生命周期內(nèi)只調(diào)用一次

class Date
{
public:
/*
// 如果用戶顯式定義了構造函數(shù),編譯器將不再生成
Date(int year, int month, int day)
{
    _year = year;
    _month = month;
    _day = day;
}
*/
void Print()
{
    cout << _year << "-" << _month << "-" << _day << endl;
}
private:
    int _year;
    int _month;
    int _day;
};
int main()
{
    // 將Date類中構造函數(shù)屏蔽后,代碼可以通過編譯,因為編譯器生成了一個無參的默認構造函數(shù)

    // 將Date類中構造函數(shù)放開,代碼編譯失敗,因為一旦顯式定義任何構造函數(shù),編譯器將不再生成

    // 無參構造函數(shù),放開后報錯:error C2512: “Date”: 沒有合適的默認構造函數(shù)可用
    Date d1;
    return 0;
}

將Date類中構造函數(shù)放開,代碼編譯失敗,因為一旦顯式定義任何構造函數(shù),編譯器將不再
生成
?

無參構造函數(shù),放開后報錯:error C2512: “Date”: 沒有合適的默認構造函數(shù)可用
?

無參的構造函數(shù)和全缺省的構造函數(shù)都稱為默認構造函數(shù),并且默認構造函數(shù)只能有一個。
注意:無參構造函數(shù)、全缺省構造函數(shù)、我們沒寫編譯器默認生成的構造函數(shù),都可以認為
是默認構造函數(shù)

?


3. 析構函數(shù)

3.1 概念

與構造函數(shù)功能相反,析構函數(shù)不是完成對對象本身的銷毀,局部對象銷毀工作是由
編譯器完成的。

而對象在銷毀時會自動調(diào)用析構函數(shù),完成對象中資源的清理工作

3.2 特性


析構函數(shù)是特殊的成員函數(shù),其特征如下:


1. 析構函數(shù)名是在類名前加上字符 ~
2. 無參數(shù)無返回值類型
3. 一個類只能有一個析構函數(shù)。若未顯式定義,系統(tǒng)會自動生成默認的析構函數(shù)。注意:析構函數(shù)不能重載
4. 對象生命周期結束時,C++編譯系統(tǒng)系統(tǒng)自動調(diào)用析構函數(shù)
?

3.3 深入了解?

下面的程序我們會看到,編譯器生成的默認析構函數(shù),對自定類型成員調(diào)用它的析構函數(shù)

class Time
{
public:
~Time()
{
    cout << "~Time()" << endl;
}
private:
    int _hour;
    int _minute;
    int _second;
};
class Date
{
private:

    // 基本類型(內(nèi)置類型)
    
    int _year = 1970;
    int _month = 1;
    int _day = 1;

    // 自定義類型

    Time _t;
};
int main()
{
    Date d;
    return 0;
}

在main方法中根本沒有直接創(chuàng)建Time類的對象,為什么最后會調(diào)用Time類的析構函數(shù)?

因為:main方法中創(chuàng)建了Date對象d,而d中包含4個成員變量,其中_year, _month,
_day三個是內(nèi)置類型成員,銷毀時不需要資源清理,最后系統(tǒng)直接將其內(nèi)存回收即可;

而_t是Time類對象,所以在d銷毀時,要將其內(nèi)部包含的Time類的_t對象銷毀,所以要調(diào)用Time類的析構函數(shù)。

但是,main函數(shù)?中不能直接調(diào)用Time類的析構函數(shù),實際要釋放的是Date類對象,所以編譯器會調(diào)用Date類的析構函數(shù),而Date沒有顯式提供,則編譯器會給Date類生成一個默認的析構函數(shù),目的是在其內(nèi)部調(diào)用Time類的析構函數(shù),即當Date對象銷毀時,要保證其內(nèi)部每個自定義對象都可以正確銷毀
main函數(shù)中并沒有直接調(diào)用Time類析構函數(shù),而是顯式調(diào)用編譯器為Date類生成的默認析
構函數(shù)
?文章來源地址http://www.zghlxwxcb.cn/news/detail-623966.html

到了這里,關于C++初階——構造和析構函數(shù)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • 【C++】:構造函數(shù)和析構函數(shù)

    【C++】:構造函數(shù)和析構函數(shù)

    如果一個類中什么成員都沒有,簡稱為空類。 空類中真的什么都沒有嗎?并不是,任何類在什么都不寫時,編譯器會自動生成以下6個默認成員函數(shù)。 默認成員函數(shù) : 用戶沒有顯式實現(xiàn),編譯器會生成的成員函數(shù)稱為默認成員函數(shù) 。 這篇文章介紹的是 構造函數(shù) 和 析構函數(shù)

    2024年04月27日
    瀏覽(46)
  • C++篇----構造函數(shù)和析構函數(shù)

    C++篇----構造函數(shù)和析構函數(shù)

    在很多時候,當寫了初始化,動態(tài)開辟的,需要寫銷毀函數(shù),寫了銷毀函數(shù)之后,但是卻忘記了調(diào)用這些函數(shù),忘記調(diào)用初始化函數(shù)還好,編譯器會報錯,但是如果是忘記調(diào)用銷毀函數(shù),那么編譯器是不會報錯,但是不能說這個程序就沒錯哦了,反而有很大的問題,存在內(nèi)存

    2024年02月01日
    瀏覽(30)
  • C++ 構造函數(shù)和析構函數(shù) 詳解

    C++ 構造函數(shù)和析構函數(shù) 詳解

    C++中用構造函數(shù)和析構函數(shù)來初始化和清理對象,這兩個函數(shù)將會被編譯器自動調(diào)用。對象的初始化和清理是非常重要的,如果我們不提供構造函數(shù)與析構函數(shù),編譯器會自動提供兩個函數(shù)的空實現(xiàn)。 構造函數(shù):主要作用于創(chuàng)建函數(shù)時對對象成員的屬性賦值。 析構函數(shù):主

    2024年02月02日
    瀏覽(45)
  • 『C++成長記』構造函數(shù)和析構函數(shù)

    『C++成長記』構造函數(shù)和析構函數(shù)

    ?? 博客主頁: 小王又困了 ?? 系列專欄: C++ ?? 人之為學,不日近則日退? ?? 感謝大家點贊??收藏?評論?? 目錄 一、類的六個個默認成員函數(shù) ??1.1認識默認成員函數(shù)? 二、構造函數(shù) ??2.1為什么要有構造函數(shù) ??2.2構造函數(shù)的概念 ??2.3構造函數(shù)的特性 ??2.4編譯器

    2024年02月05日
    瀏覽(23)
  • C++構造函數(shù)和析構函數(shù)(附示例代碼)

    構造函數(shù)和析構函數(shù)是面向?qū)ο缶幊讨械闹匾拍睿糜趧?chuàng)建和銷毀對象。 構造函數(shù) 是一種特殊的函數(shù),它在對象被創(chuàng)建時自動調(diào)用。它的作用是初始化對象的狀態(tài),例如設置成員變量的默認值、分配資源等操作。構造函數(shù)與類同名且沒有返回值,可以有多個重載版本,同

    2024年02月03日
    瀏覽(39)
  • 【C++雜貨鋪】構造函數(shù)和析構函數(shù)

    【C++雜貨鋪】構造函數(shù)和析構函數(shù)

    ?? 默認成員函數(shù) 用戶沒有顯式實現(xiàn),編譯器會自動生成的成員函數(shù),稱為默認成員函數(shù)。 構造函數(shù) :完成對象的初始化工作。 析構函數(shù) :完成對象空間的清理工作。 拷貝構造 :使用同類對象初始化創(chuàng)建對象。 賦值重載 :把一個對象賦值給另外一個對象(該對象已存在

    2024年02月16日
    瀏覽(23)
  • C語言大師(5)構造函數(shù)和析構函數(shù)

    引言 在C++的面向?qū)ο缶幊讨校瑯嬙旌瘮?shù)和析構函數(shù)扮演著至關重要的角色。它們分別管理對象的初始化和銷毀過程,確保資源的有效分配和釋放。了解這些函數(shù)如何工作,對于編寫高效和可靠的C++程序至關重要。 1. 構造函數(shù) 構造函數(shù)在每次創(chuàng)建類的新對象時自動調(diào)用。它主

    2024年01月22日
    瀏覽(26)
  • 【c++】類和對象(三)構造函數(shù)和析構函數(shù)

    【c++】類和對象(三)構造函數(shù)和析構函數(shù)

    ?? 個人主頁 :Quitecoder ?? 專欄 :c++筆記倉 朋友們大家好,本篇文章我們帶來類和對象重要的部分, 構造函數(shù)和析構函數(shù) 如果一個類中什么成員都沒有,簡稱為空類 任何類在什么都不寫時,編譯器會自動生成以下6個默認成員函數(shù) (用戶沒有顯式實現(xiàn),編譯器會生成的成

    2024年04月12日
    瀏覽(27)
  • 【C++】類和對象(中)---構造函數(shù)和析構函數(shù)

    【C++】類和對象(中)---構造函數(shù)和析構函數(shù)

    個人主頁:平行線也會相交?? 歡迎 點贊?? 收藏? 留言? 加關注??本文由 平行線也會相交 原創(chuàng) 收錄于專欄【C++之路】?? 本專欄旨在記錄C++的學習路線,望對大家有所幫助??? 希望我們一起努力、成長,共同進步。?? 我們知道類包含成員變量和成員函數(shù),當一個類中

    2024年02月05日
    瀏覽(22)
  • 【C++心愿便利店】No.5---構造函數(shù)和析構函數(shù)

    【C++心愿便利店】No.5---構造函數(shù)和析構函數(shù)

    ??個人主頁:@小沈YO. ??小編介紹:歡迎來到我的亂七八糟小星球?? ??專欄:C++ 心愿便利店 ??本章內(nèi)容:類和對象 記得 評論?? +點贊?? +收藏?? +關注??哦~ 提示:以下是本篇文章正文內(nèi)容,下面案例可供參考 如果一個類中什么成員都沒有,簡稱為空類。 空類中真的

    2024年02月09日
    瀏覽(25)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包