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

歡迎訪問 生活随笔!

生活随笔

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

c/c++

Effective C++学习第二天

發布時間:2023/11/30 c/c++ 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Effective C++学习第二天 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1:確保對象被使用前已先被初始化,讀取未初始化的值會造成不明確的行為,可能導致程序終止運行或者其他不可預期的現象;在C++中,當你使用C part of C++(C++中C語言部分的內容)且初始化可能導致運行期成本,那么就不會保證一定初始化,而non-C part of C++,系統卻能保證被初始化。對于內置類型(C++定義算術類型(整型和浮點型)和空類型為內置類型),需要手動完成初始化;對于自定義類型,需要用構造函數完成相應的初始化工作;

2:區分賦值(assignment)操作和初始化(initialization)的行為,在實現相同功能的情況下盡可能的使用初始化的方式

? ? ? 對象成員的初始化動作發生在進入構造函數之前,進入構造函數本體之前,成員變量自動調用自己的default構造函數完成默認初始化(不使用初始化列表的情況下),然后進入函數體執行對應的功能;

? ? ? 針對上述情況,使用成員初始化列表(member initialization list)替換常規的賦值操作可以省去一個賦值操作的過程,直接實現以各個成員變量的實參拷貝構造給形參,初始化列表中應包含所有的成員變量;

? ? ? 對于大多數類型而言,比起先調用default構造函數后調用copy assignment操作符,只調用一次copy構造函數是比較高效的,但對于內置類型,其初始化和賦值的成本相同,但為了一致性效果,都采用初值化列表的形式;

? ? ? 如果成員變量是const或者references,那么就一定需要初值,而不能被賦值

? ? ? 初始化列表的初始化順序是按照成員變量的定義順序進行初始化的,與初始化列表中變量如何排列無關;

? ? 結論:初始化時,使用初始化列表可以使你的程序更加高效;當我們想要用default構造成員變量的時候,我們也可以指定成員初始列,只要指定初始化實參為空就行;

3:當classes中有多個構造函數時,每個構造函數有自己的成員初始列,那么這樣就可能出現重復的初值列,這種情況下可以將初始值列中那些“賦值表現像初始化一樣好”的成員變量,改用它們的賦值操作,并把這些賦值操作合并成一個函數(通常是private)來供所有的構造函數使用;

4:static對象,其壽命從被構造出來到程序結束為止。通常函數內的static對象稱為local static對象,其他的static對象稱為non-local static對象;

? ? ? 問題:當某個編譯單元內的某個非non-local static對象的初始化動作使用了另一個單元內的的某個non-local static對象,可能所用到的這個對象可能沒有初始化,而且C++對這個初始化的順序沒有明確的定義;

? ? ?解決方法:采用singleton設計模式,將每個non-local static對象搬到自己的專屬函數內(該對象在函數內被聲明為static),然后然后函數返回一個引用指向這個static對象,然后使用者調用這些函數,而不直接去指涉這些對象。這個方法的好處在于:C++保證了在函數內的local static對象會在“這個函數調用期間”“首次遇上該對象定義式時”被初始化;代碼如下:

class filesystem

{

public:std:size_t numberdisks() const;

};

extern filesystem tfs;//修改為filesystem&? tfs(){staticfilesystem fs;return fs;}

class directory

{

public:directory(params) {std::size_t disks=tfs.numberdisks();//修改為? std::size_t disks=tfs().numberdisks;

};

directory tempdir(params);//修改為directory& tempdir() {static directory td; return td;}

? ? ? 修改之后,程序用戶完全和以前一樣使用,唯一不同的就是使用函數返回的是指向static對象的引用,而非static對象本身;

? ? ? 對于singleton模式下的reference-returning函數比較簡單,往往可以變成inline函數,但是對于多線程環境下會帶來很大的麻煩;

? ? ? 引申:編譯單元是指產生單一目標文件的那些源碼,基本上它是單一源碼文件加上其所包含的頭文件,平常寫程序的一個文檔就稱為一個編譯單元;

? ? ? 結論:為了避免在對象初始化之前使用對象,需要做三件事情:1)手工初始化內置類型non-number對象;2)使用成員初始值列表對方對象的所有成分;3)在初始化次序不確定的情況下可以考慮singleton設計模式,也就是在處理跨編譯單元的初始化次序時,用local static對象替換non-local static對象。

5:如果自己沒有聲明類中的函數,編譯器會自動生成一個default構造函數、一個copy構造函數、一個copy assignment操作符和一個析構函數(non-virtual),并且這些函數都是public和inline的;

? ? ?編譯器生成的copy構造函數和copy assignment操作符只是單純地將來源對象的每一個non-static成員變量拷貝給目標對象;

? ? ?如果自己聲明了一個構造函數,則編譯器不再提供default構造函數;

? ? ?編譯器生成的copy assignment操作符,行為和copy構造函數一樣,當且僅當生成的代碼合法且有意義時;否則編譯器拒絕為class生成operator=,如成員變量中含有引用或者const變量時,則編譯器不能為自動生成一個copy assignment操作符;

? ? ?編譯器拒絕自動生成一個copy assignment構造函數的情況:1)內含reference成員變量;2)內含const變量;3)在base classes將copy assignment操作符聲明為private;編譯器拒絕為derive classes生成一個copy assignment操作符;

6:如果想要阻止某些函數被創建出來,聲明這個函數,并將其權限設置為private,但是member函數和friend函數還是可以調用private函數;

? ? ? ? ?阻值member或者friend函數調用的方法,利用一個base class,將需要阻止的函數(private權限)放到base class內,我們所需要做的就是(private)繼承base class;當我們的類要生成copy構造函數和copy assignment函數時,會調用base class類中的對應函數,這些調用會被編譯器拒絕,因為函數的權限是private;

總結

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

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

主站蜘蛛池模板: 6080毛片| 四虎永久在线视频 | 欧美成人精品欧美一级乱 | 91麻豆视频在线观看 | 色老头在线观看 | 九草视频在线观看 | 人妻与黑人一区二区三区 | 色吧五月天 | 久久免费片 | 人妻少妇一区 | 成人三级电影网站 | 久久精品国产亚洲av蜜臀色欲 | 国产乱人对白 | 自拍视频一区 | 日本黄色不卡 | 国产69精品麻豆 | 黄页网站免费观看 | 久久久社区 | 亚洲精品网站在线播放gif | 韩国av中文字幕 | 亚洲国产视频一区二区三区 | 我的邻居在线观看 | 中国一级免费毛片 | 国产亚洲色婷婷久久 | 性生活视频播放 | 中出少妇 | 最新av在线 | 魔性诱惑 | 秘密基地动漫在线观看免费 | 先锋资源av在线 | 狼人色综合 | 都市激情亚洲色图 | 夜夜添无码一区二区三区 | 欧美一区二区三区四 | 日本啪啪网 | 四虎在线影院 | 色老大网站| 日本福利一区二区 | 成人靠逼视频 | 3级黄色片| 91色综合 | 久久久精品小视频 | 五月天黄色网 | 亚洲高清资源 | 亚洲一级免费视频 | 亚洲免费视频一区 | 成人网免费视频 | 中文字幕一区二区三区在线视频 | 国产亚洲精品自拍 | 琪琪色18 | 一区二区欧美在线 | jiz亚洲| 日韩va视频 | av天天射 | 天堂在线视频免费观看 | 奇米精品一区二区三区在线观看一 | 456亚洲影视 | 成人理论片| 免费污污视频在线观看 | 青草视频免费观看 | 中文字幕免费高清视频 | 在线观看午夜 | 免费黄色av网址 | 人妻夜夜爽天天爽 | 风间由美一区 | 欧美一区二区三区在线 | av色区| 国产古装艳史毛片hd | 久久精品九九 | 亚洲最黄视频 | 色婷婷av一区二区三区gif | 亚洲h动漫 | 亚洲欧洲成人精品久久一码二码 | 黄色一级免费 | 久久永久免费视频 | 久久加久久| 椎名由奈av一区二区三区 | 国产片网站 | 诱惑の诱惑筱田优在线播放 | 三级麻豆 | 亚洲无码乱码精品国产 | 国产精品性爱在线 | 国产精品无码久久久久一区二区 | 人妻一区二区三区视频 | 久久加久久 | 中文字幕天堂在线 | 久久久免费网站 | 超碰加勒比 | 丰满少妇熟乱xxxxx视频 | 丁香花电影高清在线阅读免费 | 国产午夜啪啪 | youjizzxxxxx| 久久美利坚 | 免费观看成人在线视频 | 日韩人妻一区二区三区蜜桃 | 日本精品一区二区 | 青草草在线观看 | 在线观看中出 | 国产精品毛片一区二区在线看 |