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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

C++ primer 第7章 类

發布時間:2023/12/13 c/c++ 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C++ primer 第7章 类 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

成員函數的聲明必須在類的內部,定義則既可以在類的內部,也可以在類的外部。
作為接口組成部分的非成員函數,它們的定義和聲明都在類的外部。

類可以允許其他類或者函數訪問它的非公有成員,方法是令其他類或函數成為它的友元。如果類想把一個函數作為它的友元,只需要增加一條以friend關鍵字開始的函數聲明語句即可。

友元聲明只能出現在類定義的內部,但是在類內出現的具體位置不限。友元不是類的成員,不受所在區域訪問控制級別的約束。一般來說,最好在類定義開始或結束前的位置集中聲明友元。
如果一個類指定了友元類,聲明形式friend class 類名,則友元類的成員函數可以訪問此類包括非公有成員在內的所有成員。
友元關系不存在傳遞性。

可變數據成員,是在變量的聲明中加入mutable關鍵字,任何成員函數,包括const成員函數,都可以修改可變數據成員的值。

含有指針數據成員的類一般不宜使用默認的拷貝和賦值操作,如果類的數據成員都是內置類型的,則直接使用類對象執行拷貝和賦值操作是可以的。

要想把類的成員函數定義成內聯函數,有幾種不同的途徑。第一種是直接把函數定義放在類的內部,第二種是把函數定義放在類的外部,并且在定義之前顯示地指定inline。

類允許包含指向它自身類型的引用或指針。

如果類的數據成員是const、引用,或者屬于某種未提供默認構造函數的類類型,我們必須通過構造函數初始值列表為這些成員提供初值,示例如下:
類名(參數列表...):i(ii),ci(ii),ri(i){}
在很多類中,初始化和賦值的區別事關底層效率問題:前者直接初始化數據成員,后者則先初始化再賦值。除了效率問題外更重要的是,一些數據成員必須被初始化。
成員的初始化順序與它們在類定義中的出現順序一致:第一個成員先被初始化,然后第二個,以此類推。構造函數初始值列表中初始值的前后位置關系不會影響實際的初始化順序。

如果一個構造函數為所有參數都提供了默認實參,則它實際上也定義了默認構造函數。

將構造函數聲明為explicit可抑制構造函數的隱式轉換。關鍵字explicit只對一個實參的構造函數有效,需要多個實參的構造函數不能用于執行隱式轉換,所以無需將這些構造函數指定為explicit。只能在類內聲明構造函數時使用explicit關鍵字,在類外部定義時不應加explicit關鍵字。

聚合類使得用戶可以直接訪問其成員,并且具有特殊的初始化語法形式。當一個類滿足如下條件時,我們說它是聚合的:

  • 所有成員都是public的
  • 沒有定義任何構造函數
  • 沒有類內初始值
  • 沒有基類也沒有虛函數

除了靜態常量成員之外,其他靜態成員不能在類的內部初始化。

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的C++ primer 第7章 类的全部內容,希望文章能夠幫你解決所遇到的問題。

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