C++學習日記 Day4

2021-01-11 天下只有三分月i

構造函數和析構函數

分類

按照參數分類:有參構造 無參構造(默認構造)

按照類型分類:普通構造 拷貝構造 格式:類名(const 類名 & aaa)

【注】構造函數的寫法(就是一個初始化的函數):

//沒有返回值,也不寫void,函數名與類名相同;

//可以有參數,可以發生重載;

//由編譯器自動調用,不需要手動調用,且編譯器只調用一次;

【注】析構函數的寫法(個人覺得就是銷毀的函數)

//沒有返回值,也不寫void,函數名與類名相同,在函數名前加 ~

//不可以有參數,不能發生重載;

//由編譯器自動調用,不需要手動調用,且編譯器只調用一次;

個人覺得構造函數和析構函數就像是數據結構中鍊表的初始化和銷毀兩個操作,我之前根本不知道這個東西,所以肯定也沒用過,原因是大部分時候這三個函數由編譯器自動添加,不過對於特殊的class,可能需要手寫。

2. 調用

默認構造調用Person p;不要寫成Person p(),編譯器會認為是函數聲明

括號法 Person p1(10) Person p2(p1)

3. 顯示法

Person(10) 匿名函數對象 特點:此行執行完後系統立刻回收

Person(p1) 不可以用拷貝構造來初始化 匿名對象,編譯器認為是對象聲明

隱式法

Person p1 = 10; 相當於編譯器將代碼轉為Person p1=Person(10);

拷貝構造

使用一個已經創建好的對象來初始化另一個對象

以傳值的方式 給函數傳遞參數 void doWord(Person p);

以值的方式返回局部對象 Person doWork();

平時我們常用到拷貝函數而不知道,因為拷貝函數默認是編譯器提供的,我們沒注意到。例如:我們在主函數中定義int a = 10;而將a作為參數傳給子函數,我們都知道在子函數中對a作修改不能影響到主函數中a的值,原因就在於執行時調用了拷貝函數,將a拷貝了一份,而子函數中修改的就是拷貝出來的值。

構造函數的調用規則

系統會默認給一個類添加至少三個函數,默認構造函數,析構函數,拷貝構造函數

如果提供有參構造、系統就不會提供默認構造。但是會提供拷貝構造

如果提供拷貝構造,其他構造函數系統都不提供了

深拷貝和淺拷貝

系統提供拷貝構造函數,只會做簡單的值拷貝

如果類中有屬性開闢到堆區,那麼釋放時,由於淺拷貝問題導致堆區內容重複釋放, 程序down掉

利用深拷貝來解決淺拷貝問題

初始化列表

構造函數名稱 ():屬性(值),屬性(值),屬性(值)······

類對象作為類成員

當其他類對象作為本類成員,先構造其它類對象,再構造自身,釋放時順序與構造

時相反

explicit關鍵字

explicit關鍵字用途:防止隱式類型轉換方式來初始化對象

new 和 delete操作符與malloc() free()函數區別

new delete是運算符 ; malloc() free()是一個庫函數

malooc()返回值是void* ;new返回值是new的對象的指針

malloc()需要判斷是否開闢成功,而new內部做好了操作

malloc()不會調用構造函數 new調用構造函數;

malloc()釋放用free() new釋放用delete;

不要用void* 去接收new出來的對象,會導致不能釋放

利用new在堆區創建數組,類中必須要存在默認構造函數,否則無法創建

如果是數組 釋放時要在 delete後加[]

delete [] person;

相關焦點

  • 最簡單易懂的C++教程 Day 15
    題目標題: 高斯日記    大數學家高斯有個好習慣:無論如何都要記日記。    他的日記有個與眾不同的地方,他從不註明年月日,而是用一個整數代替,比如:4210    後來人們知道,那個整數就是日期,它表示那一天是高斯出生後的第幾天。這或許也是個好習慣,它時時刻刻提醒著主人:日子又過去一天,還有多少時光可以用於浪費呢?
  • 【C++】C++獲取系統日期時間
    int tm_hour; /* 時 - 取值區間為[0,23] */int tm_mday; /* 一個月中的日期 - 取值區間為[1,31] */int tm_mon; /* 月份(從一月開始,0代表一月) - 取值區間為[0,11] */int tm_year; /* 年份,其值等於實際年份減去1900 */int tm_wday
  • 萬能超的arduino學習日記(一)
    本科時候有接觸過arduino,但是由於導師方向原因,轉做了3D列印和動力學分析,所以這裡是啥都會一點點的萬能超,希望能夠和大家一起學習討論。最近由於興趣原因,決定重新撿起arduino,所以決定寫這個萬能超的arduino學習日記跟大家一起重新學習。最開始的入門學習,我選擇跟B站太極創客的學習視頻,因為有基礎,選擇二倍速觀看學習。
  • 英語詞彙指導:day by day與day after day有何區別
    新東方網>英語>英語學習>語法詞彙>詞彙指導>正文英語詞彙指導:day by day與day after day有何區別 2012-12-13 20:25 來源:可可英語 作者:
  • day的意思是一天,day in, day out是什麼意思呢?
    day是一個非常高頻的單詞,意思也比較豐富。day可以做名詞、形容詞和副詞。今天我們主要來看一下day做名詞的用法。1、I saw Tom three days ago.我三天前見過湯姆。這句話中的days是day的複數形式,意思是天、幾天。句子中三天前的表達方式是three days ago。
  • 攝影學習日記,單反白平衡模式的設置技巧
    各位讀者朋友們大家好,我是攝影學習日記,從今天開始讓我們從一起來學習單反攝影,讓我們一起來見證我們攝影學習進步的一點一滴,從一個菜鳥到大神的過程。單反拍攝還有一個重要的屬性,那就是白平衡模式,今天就讓我們來迅速掌握白平衡模式的設置技巧。
  • 《雷鋒日記》:穿越「時光隧道」的青春印記
    雷鋒遺留下來的日記從嚴格意義上講,並不完全是日記體裁。 雷鋒參軍前的3本日記本中只記了少許日記,其餘多數是他學政治、學文化、學技術的筆記。參軍後的5本日記本,也是日記和學習筆記混寫在一起的。如果是寫日記,雷鋒便在上面標明年月日;如果是筆記,一般沒有年月日。正因為雷鋒日記的這種特點,所以在以後準備正式發表、出版時,便有一個篩選、整理的過程。
  • 這才是中國最真實的抗疫日記 |《查醫生援鄂日記》英文版開啟全球...
    這是全世界第一本由一線醫生撰寫的抗疫日記,對於各國讀者了解中國抗疫經驗和抗疫精神具有獨特作用。▲圖為《查醫生援鄂日記》英文版封面《查醫生援鄂日記》由上海交通大學醫學院附屬仁濟醫院主編,我院呼吸科醫生、上海第一批援鄂醫療隊隊員查瓊芳撰寫。
  • 英語日記帶翻譯:我的日常生活(MY DAILY LIFE )
    英語日記帶翻譯:我的日常生活(MY DAILY LIFE )   初中英語日記帶翻譯:我的日常生活(MY DAILY LIFE )   Though my daily life is extremely monotonous, I try hard to adapt myself to it.
  • C++程式設計師的職業生涯規劃
    對多線程環境編程有一定的理解,能獨立完成伺服器端模塊的開發、維護和優化; 4.深刻理解網際網路視頻播放原理,對ffmpeg等框架有實際的使用經驗; 5、有視頻直播、點播、視頻會議、監控安防等方面經驗優先 6、熟悉Nginx/Squid模塊開發優先考慮,有FMS等流媒體伺服器搭建經驗、P2P系統研發經驗、知名優秀的視頻產品服務端設計和研發經驗優先考慮 二、應用開發工程師windows /linuxc++ (QT和MFC,偏前端
  • 亞馬遜Prime day已經開始,這些基本常識你應該知道!
    因為我在之前的文章中,多次提醒大家做好相關運營技巧工作:官宣 - 2019亞馬遜Prime day時間敲定,且釋放新紅利。打開一個產品之後,如圖: 有藍色字體的,說明正在參加本次Prime day秒殺。
  • 每天一句兒童英語口語練習:Sunny Day
    Words 單詞: 1. rainy 英 [ re ni] 美 [ re ni] 下雨 2. sunny 英 [ s ni] 美 [ s ni] 陽光燦爛 3. cloudy 英 [ kla di] 美 [ kla di] 多雲 4.
  • 人類日記簡史
    尤其是前者(也就是著名的「浮生日記」),幾乎消解了我們傳統印象中日記的一切應有特質——私密感、個性化、隨意性——甚至還增添了許多「反日記」的文體特質,比如抽象話的刻意採用,以及過於文學性的意境延展,這些倒很符合「非虛構寫作」的定義。很難知道這樣的流變,是不是已經到達了「日記」所能承載的職能極限。
  • 第二屆「紅色日記徵文大賽」徵集扶貧日記
    [脫貧攻堅 決戰決勝]第二屆「體育彩票•紅色日記徵文大賽」徵集「扶貧日記」【何媒通訊社】2020年是全面建成小康社會目標實現之年,是脫貧攻堅收官之年。舉全國之力,打贏脫貧攻堅戰,是今年工作的重中之重。在這場千軍萬馬共同參與的大戰役中,許多幹部走出機關,走向基層,進村入戶,調研幫扶,記寫日記(筆記)。
  • 《晨間日記的奇蹟》:晨間日記的N次方
    《晨間日記的奇蹟》是2009年5月1日由南海出版公司出版的圖書,作者佐藤轉。本書全面公開寫晨間日記的三大原則和七大作戰法則。發明了「九宮格日記」,成為上班一族、金融管理者、創意人員的最愛。1.「過去+未來日記」讓你變得更堅定「晨間日記」分為兩部分。
  • 英語作文日記怎麼寫?注意格式與題材
    在發愁英語日記怎麼寫?不用擔心,新東方網小編給大家搜集整理了各類話題的英語日記,供大家參考,希望能給大家帶來靈感,記下每天發生的奇事、趣事,寫出更加優秀的英語日記。   一、英語作文的日記格式及怎麼寫?
  • 「white day」是白色情人節,那「black day」是指什麼意思呢?
    week/the following week 第二周the next day/the following day 第二天the day after tomorrow 後天 in two days` time/two days after 兩天後英文中還有很多表達,看似跟以上表達類似,但意思理解起來卻不那麼容易,快來看看,你都認識幾個。
  • C++的轉換手段並與explicit關鍵詞配合使用
    ++作者:良知猶存轉載授權以及圍觀:歡迎添加微信公眾號:羽林君隱式轉化c++語言不會直接將兩個不同類型的值相加,二十先根據類型轉化規則設法將運算對象的類型統一後再求值。例如 int value = 3.14 +3;這個程序是可以編譯通過的,只不過編譯器可能會警告改運算損失了精度。
  • 節氣日記每天寫,篇篇都是形容詞,語文老師教你用創新角度寫日記
    隨著天氣逐漸寒冷,小學生們的日記內容也和天氣緊密相連。今天寫上學路上快被凍僵了,明天寫媽媽讓我多穿衣服,年年歲歲花相似,還有偷懶的小學生,把去年的日記再抄一遍。你們當語文老師看不懂嗎?天氣、季節日記天天寫,篇篇都是流水帳。學生們不禁發問:為什麼要我們寫天氣預報呢?培養小學生的寫作能力,通過日記的形式,鍛鍊的是觀察力。而感受天氣變化,就是對觀察力最好的練習。
  • 54年寫日記 記錄生活和感悟
    家住唐山市遷安縣永安小區的張海彬老人生於1949年10月4日,從16歲起,他便養成了寫日記的習慣,至今已經寫了54年。在這些經歷了半個多世紀的文字裡,記載著他從立志當兵到參加工作的成長曆程,也記載著他從家庭生活到情感世界的點點滴滴,其中的「家庭經濟日記」被當地文史部門評價為「這是中國普通家庭經濟生活變化的最真實記錄」,並收錄於遷安市志。