原文:不要在構造函數中調用可重寫的方法

原因 非密封類型的構造函數調用其類中定義的虛方法。 規則說明 調用虛方法時,直到運行時之前都不會選擇執行該方法的實際類型。構造函數調用虛方法時,可能尚未執行調用該方法的實例的構造函數。 如何修復沖突 要修復與該規則的沖突,請不要從某類型的構造函數中調用該類型的虛方法。 何時禁止顯示警告 不要禁止顯示此規則發出的警告。應重新設計該構造函數,以取消對虛方法的調用。 示例 下面的示例演示與該規則沖突產 ...

2017-06-29 10:14 0 1638 推薦指數:

查看詳情

為什么不要在構造函數調用函數

先看一段在構造函數中直接調用函數的代碼:   這里的結果將打印:1。   這表明第6行執行的的是Base::Foo()而不是Derive::Foo(),也就是說:虛函數構造函數“不起作用”。為什么?   當實例化一個派生類對象時,首先進行基類部分的構造,然后再進行派生類 ...

Sat Apr 28 20:57:00 CST 2012 2 14078
絕對不要在 構造函數/析構函數 調用函數

今天為了查一個重復delete的bug,在析構函數調用了一個虛函數 toString,想在對象析夠前打印對象信息,結果發現打印出來全都是基類的,后來仔細研究了這個問題,先說結論: 1,絕對不要在構造函數和析構函數調用函數,他們都不是動態綁定的。 2,如果析構函數是虛函數 ...

Sun Feb 21 07:19:00 CST 2016 0 1774
Java在構造函數調用其它構造函數

在Java構造函數調用其它構造函數的方式與C++不同,需要使用this關鍵字,而不是像C++直接使用構造函數名來調用。 運行結果為: ...

Tue May 05 17:50:00 CST 2020 0 3769
構造函數調用另一個構造函數

直接貼代碼: 優點:公共的構造器代碼只需要編寫一次,提高復用性 下面我們來看子類調用父類的構造函數: 注意: 1,使用super調用超類構造器的語句必須是子類構造器的第一條語句。 2,如果子類的構造器沒有顯式地調用超累的構造器,則自動調用超類默認(沒有參數 ...

Wed Oct 30 00:58:00 CST 2019 0 712
Java -- 構造函數 & this & 方法重寫方法重載的區別

JAVA: 今天總結一下構造方法、關鍵字、方法重載和方法重寫的異同 一、構造方法構造函數) 1、構造方法的作用: 一是創建對象時調用構造方法創建對象,二是可以初始化多個屬性 【學生類創建一個學生對象stu:Student stu = new Student ...

Thu Jan 24 02:44:00 CST 2019 0 635
【C++】不要在構造函數或析構函數調用函數

  這個問題來自於《Effective C++》條款9:永遠不要在構造函數或析構函數調用函數 。   假設有如下代碼:    現在,請分析執行下列代碼調用時所發生的事情:   很明顯,一個 BuyTransaction類構造器被調用。但是,首先調用 ...

Mon Aug 24 19:31:00 CST 2015 0 5023
構造函數的三種調用方法

括號法 就是直接用普通函數調用方式 顯示法 將類名進行調用,然后傳給一個變量 隱式方法 將參數放在等號后面進行調用 ...

Fri Sep 25 07:23:00 CST 2020 0 1287
c++構造函數調用方法

#include<iostream>using namespace std; class Base{public: Base(){ cout<<"hello"& ...

Mon Sep 02 03:43:00 CST 2019 0 1063
 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM