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

歡迎訪問 生活随笔!

生活随笔

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

c/c++

C++类中成员变量的初始化有两种方式

發布時間:2025/3/15 c/c++ 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C++类中成员变量的初始化有两种方式 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

C++類中成員變量的初始化有兩種方式:

???????? 構造函數初始化列表和構造函數體內賦值下面看看兩種方式有何不同。

???????? 成員變量初始化的順序是按照在那種定義的順序。

1、內部數據類型(char,int……指針等)

[cpp] view plaincopy
  • class?Animal??
  • {??
  • public:??
  • ????Animal(int?weight,int?height):???????//A初始化列表??
  • ??????m_weight(weight),??
  • ??????m_height(height)??
  • ????{??
  • ????}??
  • ????Animal(int?weight,int?height)???????//B函數體內初始化??
  • ????{??
  • ????????m_weight?=?weight;??
  • ????????m_height?=?height;??
  • ????}??
  • private:??
  • ????int?m_weight;??
  • ????int?m_height;??
  • };??
  • 對于這些內部類型來說,基本上是沒有區別的,效率上也不存在多大差異。

    當然A和B方式不能共存的。

    ?

    2、無默認構造函數的繼承關系中

    [cpp] view plaincopy
  • class?Animal??
  • {??
  • public:??
  • ????Animal(int?weight,int?height):????????//沒有提供無參的構造函數???
  • ??????m_weight(weight),??
  • ??????m_height(height)??
  • ????{??
  • }??
  • private:??
  • ????int?m_weight;??
  • ????int?m_height;??
  • };??
  • ??
  • class?Dog:?public?Animal??
  • {??
  • public:??
  • ????Dog(int?weight,int?height,int?type)???//error?構造函數?父類Animal無合適構造函數??
  • ????{??
  • ????}??
  • private:??
  • ????int?m_type;??
  • };??
  • 上面的子類和父類編譯會出錯:


    因為子類Dog初始化之前要進行父類Animal的初始化,但是根據Dog的構造函數,沒有給父類傳遞參數,使用了父類Animal的無參數構造函數。而父類Animal提供了有參數的構造函數,這樣編譯器就不會給父類Animal提供一個默認的無參數的構造函數了,所以編譯時報錯,說找不到合適的默認構造函數可用。要么提供一個無參數的構造函數,要么在子類的Dog的初始化列表中給父類Animal傳遞初始化參數,如下:

    [cpp] view plaincopy
  • class?Dog:?public?Animal??
  • {??
  • public:??
  • ????Dog(int?weight,int?height,int?type):??
  • ????????Animal(weight,height)?????????//必須使用初始化列表增加對父類的初始化??
  • ????{??
  • ????????;??
  • ????}??
  • private:??
  • ????int?m_type;??
  • };??
  • ?

    3、類中const常量,必須在初始化列表中初始,不能使用賦值的方式初始化

    [cpp] view plaincopy
  • class?Dog:?public?Animal??
  • {??
  • public:??
  • ????Dog(int?weight,int?height,int?type):??
  • ????????Animal(weight,height),???
  • ????????LEGS(4)????????????????//必須在初始化列表中初始化??
  • ????{??
  • ????????//LEGS?=?4;???????????//error??
  • ????}??
  • private:??
  • ????int?m_type;??
  • ????const?int?LEGS;??
  • };??
  • 4、包含有自定義數據類型(類)對象的成員初始化????????

    [cpp] view plaincopy
  • class?Food??
  • {??
  • public:??
  • ????Food(int?type?=?10)??
  • ????{??
  • ????????m_type?=?10;??
  • ????}??
  • ????Food(Food?&other)?????????????????//拷貝構造函數??
  • ????{??
  • ????????m_type?=?other.m_type;??
  • ????}??
  • ????Food?&?operator?=(Food?&other)??????//重載賦值=函數??
  • ????{??
  • ????????m_type?=?other.m_type;??
  • ????????return?*this;??
  • ????}??
  • private:??
  • ????int?m_type;??
  • };??
  • ??
  • (1)構造函數賦值方式?初始化成員對象m_food??
  • class?Dog:?public?Animal??
  • {??
  • public:??
  • ????Dog(Food?&food)??
  • ??????//:m_food(food)????
  • ????{??
  • ????????m_food?=?food;???????????????//初始化?成員對象??
  • ????}??
  • private:??
  • ????Food?m_food;??
  • };??
  • //使用??
  • Food?fd;??
  • Dog?dog(fd);???//??
  • Dog?dog(fd);結果:??
  • 先執行了???對象類型構造函數Food(int?type?=?10)——>???
  • 然后在執行?對象類型構造函數Food?&?operator?=(Food?&other)??
  • 想象是為什么???
  • ??
  • (2)構造函數初始化列表方式??
  • class?Dog:?public?Animal??
  • {??
  • public:??
  • ????Dog(Food?&food)??
  • ??????:m_food(food)??????????????????//初始化?成員對象??
  • ????{??
  • ????????//m_food?=?food;?????????????????
  • ????}??
  • private:??
  • ????Food?m_food;??
  • };??
  • //使用??
  • Food?fd;??
  • Dog?dog(fd);???//??
  • Dog?dog(fd);結果:執行Food(Food?&other)拷貝構造函數完成初始化??
  • 不同的初始化方式得到不同的結果:

          明顯構造函數初始化列表的方式得到更高的效率。


    原文轉載自點擊打開鏈接

    總結

    以上是生活随笔為你收集整理的C++类中成员变量的初始化有两种方式的全部內容,希望文章能夠幫你解決所遇到的問題。

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

    主站蜘蛛池模板: 蜜臀av免费在线观看 | 九一国产视频 | 性开放的欧美大片 | 男生和女生靠逼视频 | 日韩高清在线 | 亚洲一区二区三区久久久成人动漫 | 国产精品无码久久久久 | 欧美 亚洲 一区 | 久久久夜 | 久久黄色一级 | 精品国产精品网麻豆系列 | 少妇做爰k8经典 | 国产成人精品一区二区无码呦 | 亚洲黄色免费电影 | 99精品久久久久久中文字幕 | 亚洲激情网站 | 国产每日更新 | 人人干在线视频 | 亚洲一卡二卡在线 | 色视频免费 | 二区三区免费 | 日本乱大交xxxx公交车 | 亚洲成人自拍偷拍 | 亚洲综合伊人久久 | 韩国三级做爰高潮 | 亚洲干综合| 99久久国 | 亚洲欧洲一区二区在线观看 | 欧美日韩第一区 | 国产色站 | 欧美一区欧美二区 | 丝袜国产在线 | 活大器粗np高h一女多夫 | 69天堂网| 亚洲三级在线视频 | 岛国片免费在线观看 | 色婷婷综合久久久中文字幕 | 天天爽夜夜爽人人爽 | 亚洲欧美日本在线观看 | 久久久久久免费毛片精品 | 夜夜夜网| 好吊妞视频在线观看 | 亚洲青青草 | av激情网站| 成人精品一区二区三区电影黑人 | 91高清在线免费观看 | 国产伦视频 | 波多野结衣乳巨码无在线观看 | 欧美激情午夜 | 欧洲女同同性吃奶 | 欧美猛交xxx | 国产精品一区二区人人爽 | 亚洲一区播放 | av一级黄色片 | 美女让男生桶 | 日韩国产欧美在线观看 | 亚洲国产精品成人综合色在线婷婷 | 国产精品三级久久久久久电影 | 久久精品无码Av中文字幕 | 亚洲永久精品在线观看 | 69xx网站 | 国产吞精囗交免费视频网站 | 黄色在线播放 | 极度诱惑香港电影完整 | 久久成人动漫 | 亚洲免费三区 | 国产一区二区 | 免费黄色在线网站 | 天天欧美 | 亚洲成肉网| 亚洲色图在线观看视频 | 麻豆md0077饥渴少妇 | 中文精品一区 | 理论片在线观看视频 | 亚洲男男网站 | 久久99精品久久久水蜜桃 | 性生活三级视频 | 国产av天堂无码一区二区三区 | 黄色一级片免费播放 | 欧洲激情网 | 樱花动漫无圣光 | 色综合久久88色综合天天 | 夜夜操天天射 | 99热这里有精品 | 一本久道久久 | 国产一区二区高清 | 中文字幕一区三区 | 动漫av网站 | 免费一级黄色 | 秋葵视频成人 | 精品久久国产视频 | 色屁屁一区二区三区 | 日韩精品一级 | 少妇导航av | 久久午夜无码鲁丝片午夜精品 | 91久久国语露脸精品国产高跟 | 在线观看亚洲一区二区 | 狠狠干欧美 | www.一区二区.com |