為什麽子類的初始化列表不能初始化父類的成員
為什麽子類的初始化列表不能初始化父類的成員
- C++初始化列表是一種效率更高的初始化方法,但也有一些不能使用的場景。
舉個例子
- 以下定義一個矩形,然後再定義一個正方形,繼承自矩形。
- 這段代碼有問題嗎?
... class Rectangle{ public: Rectangle() :a(0), b(0){} Rectangle(int x, int y) :a(x), b(y){} public: int a; int b; }; class Square :public Rectangle { public: Square(int x):a(x) {} }; ...
- 是的,這段代碼是無法編譯通過的。
- 雖然乍一看沒毛病,繼承是public繼承,構造是父類先構造,但為什麽子類用初始化列表時會報錯呢?
- 而將子類的構造函數改成下面這樣,竟然就可以了。它們明明看起來一樣啊?
...
Square(int x)
{
a = x;
}
...
查找原因
- 這就要探討以下初始化列表和普通初始化的區別。
為什麽子類的初始化列表不能初始化父類的成員
相關推薦
為什麽子類的初始化列表不能初始化父類的成員
{} 類的初始化 初始 logs 列表 正方形 是的 一個 構造 為什麽子類的初始化列表不能初始化父類的成員 C++初始化列表是一種效率更高的初始化方法,但也有一些不能使用的場景。 舉個例子 以下定義一個矩形,然後再定義一個正方形,繼承自矩形。 這段代碼有問題嗎?
為什麽子元素設置margin-top會作用在父元素上?
school overflow blank pad over lan 子元素 sch div 原因在於:CSS 外邊距合並 復現: <!DOCTYPE html> <html lang="en"> <head> <meta
【校招面試 之 C++】第1題 為什麽優先使用構造函數的初始化列表
初始化 校招 操作 struct st2 使用 mage div 賦值運算 1.首先看一個例子: #include<iostream> using namespace std; class Test1 { public: Test1() // 無參
為什麽static成員一定要在類外初始化?
靜態數據成員 bject 靜態 c聲明 永遠 實例 ide object 即使 這是因為被static聲明的類靜態數據成員,其 實體 遠在main()函數開始之前就已經在全局數據段中誕生了(《Inside the C++ Object Model》page24
java中為什麽實體類需要實現序列化
color 客戶端訪問 tro 我們 str 操作 bsp div zab 當客戶端訪問某個能開啟會話功能的資源,web服務器就會創建一個HTTPSession對象,每個HTTPSession對象都會占用一定的內存,如果在同一個時間段內訪問的用戶太多,就會消耗大量的服務器
java 成員變量為什麽可以不初始化而局部變量必須初始化
操作數棧 hot 局部變量 區域 內存空間 為什麽 出口 hotspot 一個棧 對於java虛擬機內存這塊始終有點迷,今天又把深入理解jvm虛擬機拿出來翻了翻,理了理java內存區域。 ava虛擬機棧描述的是java方法執行的內存模型:每個方法在執行的同時都會創建
C語言的未初始化的數組的值為什麽是隨機的
urn turn 隨機 說明 tin main ont 情況 同學 突然想起來前幾天同學問我為什麽沒有初始化的數組的值是隨機的,發現這個困惑自己也是存在的,所以自己總結的心得. 1. 首先,並不是所有未初始化的數組的值都是隨機的.對於沒有初始化的數組,分兩種情況:
017_變量為什麽必須初始化.cpp
pre 輸出 ++ include urn return clu 初步 字符 /* 時間:2018年12月26日 星期三 17:23:19 內容:變量必須初始化 */ # include <stdio.h> int main(void) {
父類指針指向子類內存,為什麽當父類的成員函數不加virtual時,訪問的還是父類的成員函數,而不是子類同名的成員函數
https 執行 子類 對象 類名 tail detail com 成員函數 我認為是這樣,類的成員函數都在代碼區,不同的類的成員函數在代碼區有自己的類名稱空間限制,類的虛函數在虛函數表中,程序執行的時候,是先在虛函數表中找該成員函數,如果沒有找到,就去該類在代碼區的成員函
分針網——每日分享:標簽為什麽要語義化?
標簽 1、手持移動設備的無障礙閱讀 手持移動設備如PDA、智能手機等可能對CSS的解析能力較弱,這時可能就需要更語義的標簽來體現一個頁面的易讀性 2、盲人等一些障礙人士的更好地閱讀 屏幕閱
在java中String類為什麽要設計成final?
tro cli lai 這一 引用 沒有 num 重新 static 大神鏈接:在java中String類為什麽要設計成final? - 程序員 - 知乎 我進行了重新排版,並且更換了其中的一個例子,讓我們更好理解。 String很多實用的特性,比如說“不可變性”,是工
7.qfilesystemmodel rowcount 為什麽為0? 一個簡單的model類的例子
不顯示 tro display ica directory find .cpp this int 任務: 1.新建一個空的mainwindow項目 2.debug下編譯得到一個文件夾,應用程序輸出這個文件夾中的文件(不顯示文件夾中的文件夾) 3.使用QFileSystemM
淺析為什麽 char 類型的範圍是 : -128~+127
ref 什麽 的人 是我 col article 關於 即使 問題: 在 C 語言中。 signed char 類型的範圍為 -128~127,每本教科書上也這麽寫。可是沒有哪一本書上(包含老師)也不會給你為什麽是 -128~127,這個問題貌似看起來也非常easyea
為什麽要通過百科類產品做網站營銷優化推廣工作
今天是2017年6月10日,細心的站長應該早已悉知,百度從本月1日起正式開始落實實名制。現在你去看一眼百度知道首頁的右上角,有一個十分顯眼的HOT,時刻提醒著用戶實名制來啦!這表明了百度加強用戶管理的決心,也增加了通過百度產品做網站營銷優化推廣工作的難度。不過,我們億豐網絡倒是認為本次調整是一次好事,因
為什麽用Object.prototype.toString.call(obj)檢測對象類型?
fin date regexp 對象 boolean on() obj all function console.log(Object.prototype.toString.call("jerry"));//[object String]console.log(Objec
為什麽通過空指針(NULL)能夠正確調用類的部分成員函數
函數的調用 wid 分析 使用 coo win data- func 標準 #include <iostream> using namespace std; class B { public: void foo() { cout <<
為什麽會出現集合類
如何 ont 面向對象編程 family 字符串類型 class 而是 ring 為什麽 對於我們學習的是面向對象的編程語言,而面向對象編程語言是通過對象來實現的 為了方便對多個對象進行操作,我們必須對這多個對象進行存儲,而要想對 多個對象進行存儲。就不能是一個基本變量,而
為什麽要參數化執行SQL語句呢?
執行sql 漏洞攻擊 用戶輸入 lec bsp 參數化 查找 作用 找到 C#參數化執行SQL語句,防止漏洞攻擊本文以MYSQL為例【20151108非查詢操作】 為什麽要參數化執行SQL語句呢? 一個作用就是可以防止用戶註入漏洞。 簡單舉個列子吧。 比如賬號密碼登入,如
以+scheduledTimerWithTimeInterval...的方式觸發的timer,在滑動頁面上的列表時,timer會暫定回調,為什麽?如何解決?
指定 val timer 運行模式 sch 發的 滑動頁面 循環 oop 這裏強調一點:在主線程中以+scheduledTimerWithTimeInterval...的方式觸發的timer默認是運行在NSDefaultRunLoopMode模式下的,當滑動頁面上的列表時
為什麽 c++中函數模板和類模板的 聲明與定義需要放到一起?
color code 我們 ack 二進制 通過 如果 之前 類型 將模板的聲明與定義寫在一起實在很不優雅。嘗試用“傳統”方法,及在.h文件裏聲明,在.cpp文件裏定義, 然後在main函數裏包含.h頭文件,這樣會報鏈接錯誤。why!!!!!!!!!!!!! 這是因為函數模