The initialize list of C++ Class

性能問題之外,有些時場合初始化列表是不可或缺的,以下幾種情況時必須使用初始化列表

    • 常量成員,因為常量只能初始化不能賦值,所以必須放在初始化列表里面
    • Error1(constchar* constmsg) :data(msg)

      {

      //data = msg;

      }

    • 引用類型,引用必須在定義的時候初始化,并且不能重新賦值,所以也要寫在初始化列表里面
    • 沒有默認構造函數的類類型,因為使用初始化列表可以不必調用默認構造函數來初始化,而是直接調用拷貝構造函數初始化。
    • ?classError2

      {

      constchar* const data;

      public:

      Error2(constchar* constmsg = 0) :data(msg){}//Error2()

      };

      classError1

      {

      constchar* const data;

      Error2 e2;

      public:

      Error1(constchar* constmsg=0) :data(msg)

      {

      // e2 = e2Out;

      //data = msg;

      }

      //Error1(const char* const msg = 0) :data(msg){}

      Error1(constchar* constmsg, Error2 & e2Out) :data(msg), e2(e2Out)

      {

      //e2 = e2Out;

      //data = msg;

      }

      };

      if not, there will be a waring,
      • 但是對于類類型來說,最好使用初始化列表,為什么呢?由上面的測試可知,使用初始化列表少了一次調用默認構造函數的過程,這對于數據密集型的類來說,是非常高效的。同樣看上面的例子,我們使用初始化列表來實現Test2的構造函數
        struct Test2
        {Test1 test1 ;Test2(Test1 &t1):test1(t1){}
        }
    • 使用同樣的調用代碼,輸出結果如下。

      第一行輸出對應 調用代碼的第一行。第二行輸出對應Test2的初始化列表,直接調用拷貝構造函數初始化test1,省去了調用默認構造函數的過程。所以一個好的原則是,能使用初始化列表的時候盡量使用初始化列表。  

轉載于:https://www.cnblogs.com/gaoxianzhi/p/4440136.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/375126.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/375126.shtml
英文地址,請注明出處:http://en.pswp.cn/news/375126.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

用 W32DASM看IF高級語法

W32DASM一個靜態調試工具 代碼段:.code start:invoke MessageBox,NULL,offset messageS,offset titleS,MB_YESNO.if eax 6invoke MessageBox,NULL,offset msgOk,offset tipS,MB_OK.elseinvoke MessageBox,NULL,offset msgNo,offset tipS,MB_OK.endifinvoke ExitPr…

PE文件

PE是一種可執行文件格式 基地址:當PE文件被Windows裝載器裝入內存后內存中的版本被稱為 模塊。映射文件的起始地址被稱為模塊句柄也成為基地址 相對虛擬地址:相對于PE文件裝入地址的偏移 虛擬地址:實際的內存地址 文件偏移地址:數…

Jquery提交form表單

前臺代碼 1 <% Page Language"C#" AutoEventWireup"true" CodeBehind"Js_submit.aspx.cs" Inherits"Ctrip.Corp.Report.OfflineSite.CorpReportSetting.Js_submit" %>2 3 <html xmlns"http://www.w3.org/1999/xhtml&quo…

PYTHON--定期監測服務器端口,并將結果寫入MYSQL

定時監測服務器端口&#xff0c;然后將結果入寫數據庫。 監測用NC命令&#xff0c;入庫就用PYTHON的MYSQL模塊 再調一個基于函數的多線程。。。 妥妥的。。 是網上兩個功能的合成。。 俺不生產代碼&#xff0c;俺只是BAIDU的搬運工&#xff01; #!/usr/bin/env python import m…

MS_DOS頭部 IMAGE_DOS_HEADER

MS_DOS頭部 IMAGE_DOS_HEADER STRUCT{00H WORD e_magic ;DOS可執行文件標記字符串MZ(4D 5A)3CH DWORD e_1fanew ;指向PE文件頭} IMAGE_DOS_HEADER ENDS用十六進制編輯器打開一個EXE文件 如QQ.EXEe_magic5A 4D e_1fanew00000100H---->此地址指向PE頭文件

OpenGL C# Generator

https://github.com/nickgravelyn/GL-CS 轉載于:https://www.cnblogs.com/lilei9110/p/4442141.html

PE 頭文件 IMAGE_NT_HEADER

PE Header是PE相關結構NT映像頭IMAGE_NT_HEADER的簡稱PE頭文件開始是一個字符串PE00(50 45 00 00) 由MS_DOS頭部的e_1fanew字段指向IMAGE_NT_HEADERS STRUCT{00H DWORD Signature04H IMAGE_FILE_HEADER FileHeader18H IMAGE_OPTIONAL_HEADER32 OptionalHeader}IMAGE_NT…

刪除OD調試記錄

刪除UDD目錄下文件即可

數據存儲的幾種方式

---恢復內容開始--- iOS有四種數據持久化的方式 1.屬性列表&#xff08;plist文件&#xff09; 2.對象歸檔&#xff08;NSKeyedArchiver &#xff0c; NSKeyedUnarchiver&#xff09; &#xff0f;&#xff0f;3.偏好設置&#xff08;NSUserDefault&#xff09; 4.SQLite 數據庫…

計算機原理學習(6)-- x86-32 CPU和內存管理之分頁管理

前言 上一篇我們了解了x86-16 CPU計算機的內存訪問方式&#xff0c;尋址方式&#xff0c;以及基于MS-DOS的應用程序的內存布局。這一篇會主要介紹32位處理器的內存訪問&#xff0c;內存管理以及應用程序的內存布局。雖然目前64位CPU已經非常普及了&#xff0c;不過相對于32位的…

ESP定律

當程序載入OD之后 004AC460 > $ 60 pushad;程序停在這里 F8 指向pushad指令 pushad是把寄存器中數據入棧 棧中數據如下&#xff1a; 0012FFA4 7C930208 |EDI <-- ESP指向棧頂 0012FFA8 FFFFFFFF |ESI 0012FFAC 0012FFF0 |EBP 0012FFB0 0012F…

socket通信簡介

前言 我們深諳信息交流的價值&#xff0c;那網絡中進程之間如何通信&#xff0c;如我們每天打開瀏覽器瀏覽網頁時&#xff0c;瀏覽器的進程怎么與web服務器通信的&#xff1f;當你用QQ聊天時&#xff0c;QQ進程怎么與服務器或你好友所在的QQ進程通信&#xff1f;這些都得靠sock…

SQL Server自動化運維系列——關于郵件通知那點事(.Net開發人員的福利)

需求描述 在我們的生產環境中&#xff0c;大部分情況下需要有自己的運維體制&#xff0c;包括自己健康狀態的檢測等。如果發生異常&#xff0c;需要提前預警的&#xff0c;通知形式一般為發郵件告知。 郵件作為一種非常便利的預警實現方式&#xff0c;在及時性和易用性方面也有…

So easy Webservice 1.Socket建設web服務

socket 是用來進行網絡通訊的&#xff0c;簡單來說&#xff0c;遠程機器和本地機器各建一個socket&#xff0c;然后通過該socket進行連接通訊 socket簡單模型圖&#xff1a; socket的原理圖&#xff1a; 代碼實現&#xff1a; 1.創建socket服務端&#xff1a;用于處理客戶端發送…

去除字符串中重復字符

題目 設計算法并寫出代碼移除字符串中重復的字符&#xff0c;不能使用額外的緩存空間。注意&#xff1a; 可以使用額外的一個或兩個變量&#xff0c;但不允許額外再開一個數組拷貝。 進一步地&#xff0c; 為你的程序寫測試用例。 解答 這道題目其實是要你就地(in place)將字符…

MyEclipse 6.5安裝maven插件

MyEclipse 6.5安裝maven插件 原文 http://www.blogjava.net/caojianhua/archive/2013/11/05/406013.html 一、卸載原有maven插件 MyEclipse 6.5集成了Maven插件&#xff0c;不過有不少bug&#xff0c;用習慣了m2eclipse&#xff0c;不想在這上面浪費時間。要安裝m2eclipse&…

兩列右側自適應布局--(來自網易)

<div class"g-bd1 f-cb"><div class"g-sd1"><p>左側定寬</p></div><div class"g-mn1"><div class"g-mn1c"><p>右側自適應</p></div></div> </div> /* 兩列右…

Gradle 筆記

網上有一篇文章說的很明白&#xff0c;圖文來教你在eclipse下用gradle 來打包Androidhttp://blog.csdn.net/x605940745/article/details/41242687 步驟為&#xff1a; 1. Elipse里面導出&#xff0c;Generate Gradle build files 2. 找到生成的gradle文件夾&#xff0c;里面有…

sql server 自定義函數的使用

sql server 自定義函數的使用自定義函數 用戶定義自定義函數像內置函數一樣返回標量值&#xff0c;也可以將結果集用表格變量返回 用戶自定義函數的類型: 標量函數:返回一個標量值 表格值函數{內聯表格值函數、多表格值函數}:返回行集&#xff08;即返回多個值&#xff09; 1、…

怎么設置才能讓外網ip可以訪問mysql數據庫[轉]

轉自&#xff1a; http://www.hongyanliren.com/89.html 使用mysql中&#xff0c;很多人都會遇到這樣的問題&#xff1a;在vps服務器或者云服務器上安裝了mysql后&#xff0c;使用其他工具在外網ip之下根本就連接不上mysql&#xff0c;到底是什么原因導致外網ip無法訪問mysql數…