Geekband C++ 第一周

● 概述:以c++標(biāo)準(zhǔn)庫(kù)中的complex對(duì)象為例,介紹了成員無(wú)指針的類的基本寫法

● c++的歷史
○ 1.0:c++98
○ 2.0:c++11

● c++代碼的基本形式
○ 頭文件:1)用戶定義頭文件;2)標(biāo)準(zhǔn)庫(kù)
○ 用戶代碼

● 頭文件設(shè)計(jì)
○ 頭文件的防御式聲明:避免多次包含同一段代碼
■ #ifndef ... #endif
○ 頭文件的布局
■ 0:前置聲明
■ 1:類的聲明
■ 2:類的定義

頭文件布局

● 類的聲明
○ 包括class head和class body:complex類的聲明如
○ 內(nèi)聯(lián)函數(shù)
■ 直接在類內(nèi)定義的函數(shù)為inline函數(shù)(當(dāng)然最終是否以inline形式展開取決于compiler)
■ 在類外部定義內(nèi)聯(lián)函數(shù):(函數(shù)返回值前加)inline
○ 私有成員和公有成員
■ 數(shù)據(jù):一般聲明為私有成員

Complex類聲明

● 構(gòu)造函數(shù)
○ 沒有返回值,與類同名
○ 初始化方式
■ 使用初始化列表,而不是在構(gòu)造函數(shù)中對(duì)私有成員賦值
○ 一般是公有成員,但也可以聲明為私有成員
■ Singleton設(shè)計(jì)模式

● 常成員函數(shù)
○ 函數(shù)聲明時(shí)加const關(guān)鍵字:明確表示不改變對(duì)象的數(shù)據(jù)
○ 常對(duì)象:const complex c1(2, 1) 只能調(diào)用常成員函數(shù),調(diào)用其他函數(shù)會(huì)報(bào)錯(cuò)(因?yàn)槠胀ê瘮?shù)有可能改變常對(duì)象的成員,這是矛盾的?。?/p>

● 設(shè)計(jì)函數(shù)時(shí):參數(shù)傳遞和返回值傳遞
○ 參數(shù)傳遞
■ 值傳遞:需要拷貝對(duì)象到棧
■ 引用傳遞:一般采用引用傳遞,速度快(只需要傳遞對(duì)象的地址)
○ 返回值
■ 一般返回引用
■ 但是局部對(duì)象不能返回引用(局部對(duì)象的生存期在返回語(yǔ)句之后結(jié)束)

● 友元
○ 類中,函數(shù)聲明時(shí)加 friend 關(guān)鍵字,函數(shù)定義時(shí)不需要加 friend關(guān)鍵字
○ 注意:相同class的object互為友元,于是有下邊的代碼

例:class的object互為友元

● 操作符重載:
○ 形式:例:inline complex& coplex::operator +=(const complex & x) {}
○ 返回值:可以是void,但不支持連續(xù)操作,比如c1+=c2+=c3;返回引用支持連續(xù)操作
○ 成員函數(shù):默認(rèn)使用this指針,指向operator的第一個(gè)對(duì)象
○ 如果操作數(shù)不是class的object
■ 使用非成員函數(shù)
○ 注意:一個(gè)有趣的用法,這些函數(shù)返回的是一個(gè)臨時(shí)的對(duì)象
■ 生成臨時(shí)對(duì)象的用法:typename(),比如int(7), complex(2,1)
■ return complex(real(x) +y, imag(x))

例:返回臨時(shí)對(duì)象
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 1.constructor構(gòu)造函數(shù) 構(gòu)造函數(shù)名稱=類名。構(gòu)造函數(shù)的作用:初始化對(duì)象的數(shù)據(jù)成員。 1.1 構(gòu)造函數(shù)的...
    hui1429閱讀 571評(píng)論 0 0
  • 1.constructor構(gòu)造函數(shù) 構(gòu)造函數(shù)名稱=類名。構(gòu)造函數(shù)的作用:初始化對(duì)象的數(shù)據(jù)成員。 1.1 構(gòu)造函數(shù)的...
    hui1429閱讀 442評(píng)論 0 0
  • 第一周 c++歷史 1.0:c++98 2.0:c++11 C++代碼基本形式 頭文件 標(biāo)準(zhǔn)庫(kù) .h 主程序 .c...
    文字工作者377閱讀 226評(píng)論 0 0
  • C++文件 例:從文件income. in中讀入收入直到文件結(jié)束,并將收入和稅金輸出到文件tax. out。 檢查...
    SeanC52111閱讀 3,117評(píng)論 0 3
  • 前言 把《C++ Primer》[https://book.douban.com/subject/25708312...
    尤汐Yogy閱讀 9,696評(píng)論 1 51

友情鏈接更多精彩內(nèi)容