C++:39---繼承中構造函數、析構函數的關系

一、繼承中構造函數的關系

  • 如果父類沒有構造函數,則子類初始化時不需要構造父類

  • 如果父類有構造函數,則子類初始化自己的構造函數時,要先初始化父類的構造函數

  • 基類的構造函數必須在派生類的構造函數初始化列表來進行初始化

  • 總結:在構造自己(子類)之前,需要先構造父類

演示案例

  • 例如:下面的父類A有構造函數,則子類B在初始化構造函數時,必須要構造父類A

class A //父類{int a_data;public:A(int data) { a_data = data; }~A() {}//5};class B :public A //子類{int b_data;public:B(int data) :A(10){b_data = data;//3}~B() {}//6};
  •  例如:下面的父類A沒有有構造函數,則子類B不需要構造父類

class A //父類{int a_data;};class B :public A //子類{int b_data;public:B(int data){b_data = data;}~B() {}};

二、若一個類中定義了另一類的構造函數關系

與繼承中構造父類的構造函數相類似:

  • 如果類中定義的對象沒有構造函數,則該類初始化時不需要構造該對象的構造

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

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

相關文章

Java應用服務器Tomcat

Tomcat 是一個小型的輕量級應用服務器,在中小型系統和并發訪問用戶不是很多的場合下被普遍使用,是開發和調試JSP 程序的首選。對于一個初學者來說,可以這樣認為,當在一臺機器上配置好Apache 服務器,可利用它響應對HTML…

C++:38---final關鍵字和禁止類繼承

一、final關鍵字 C++新標準規定:如果我們定義的類不希望被其他類繼承,那么可以在類名后加一個final關鍵字但是final類仍然可以繼承其他類。實際上C++11的關鍵字final有兩個用途。第一,它阻止了從類繼承;第二,阻止一個虛函數的重載。二、演示案例 class A final{}; class B…

C++:48---純虛函數

一、純虛函數 純虛函數一種特殊的虛函數,在許多情況下在基類中不對虛函數做出有意義的實現,而是把它定義為純虛函數,它的實現由派生類實現格式:virtual 返回類型 函數名(參數列表)=0;注意事項 純虛函數不能實現,沒有函數體,其實現由子類去實現各自的功能版本純虛函數可以…

leetcode389. 找不同

給定兩個字符串 s 和 t,它們只包含小寫字母。 字符串 t 由字符串 s 隨機重排,然后在隨機位置添加一個字母。 請找出在 t 中被添加的字母。 示例: 輸入: s "abcd" t "abcde" 輸出: e 解釋: …

C++:47---絕不重新定義繼承而來的缺省參數值

一、靜態類型、動態類型 靜態類型:在被聲明時所采用的的類型動態類型:目前所知對象的類型演示案例 下面是一個繼承體系class Shape {public:enum ShapeColor { Red, Green, Blue };virtual void draw(ShapeColor color = Red)const = 0;};class Rectangle :public Shape {pub…

C++:44---關鍵字virtual、override、final

一、虛函數 概念:在函數前面加virtual,就是虛函數虛函數的一些概念: 只有成員函數才可定義為虛函數,友元/全局/static/構造函數都不可以虛函數需要在函數名前加上關鍵字virtual成員函數如果不是虛函數,其解析過程發生在編譯時而非運行時派生類可以不覆蓋(重寫)它繼承的虛…

leetcode409. 最長回文串

給定一個包含大寫字母和小寫字母的字符串,找到通過這些字母構造成的最長的回文串。 在構造過程中,請注意區分大小寫。比如 "Aa" 不能當做一個回文字符串。 注意: 假設字符串的長度不會超過 1010。 示例 1: 輸入: "abccccdd" 輸…

C++:46---絕不重新定義繼承而來的non-virtual函數

一、看一個隱藏non-virtual函數的例子 假設class D以public的方式繼承于class B,代碼如下:class B {public:void mf();};class D :public B {};int main(){D x;B *pB = &x;pB->mf(); //調用B::mf()D *pD = &x;pD->mf(); //調用D::mf()return 0;}二、靜態綁…

C++:45---多態

一、多態介紹 面向對象的核心思想是多態性,其含義是“多種形式”概念:在子類覆蓋了父類函數的情況下,用父類的指針(或引用)調用子類對象,或者通過父類指針調用覆蓋函數的時候(動態綁定),實際上調用的是子類的覆蓋版本,這種現象叫做多態注意事項:只有用父類的指針(或引用…

leetcode415. 字符串相加

給定兩個字符串形式的非負整數 num1 和num2 ,計算它們的和。 注意: num1 和num2 的長度都小于 5100. num1 和num2 都只包含數字 0-9. num1 和num2 都不包含任何前導零。 你不能使用任何內建 BigInteger 庫, 也不能直接將輸入的字符串轉換為…

C++:53---菱形繼承、虛繼承

一、菱形繼承 在介紹虛繼承之前介紹一下菱形繼承概念:A作為基類,B和C都繼承與A。最后一個類D又繼承于B和C,這樣形式的繼承稱為菱形繼承菱形繼承的缺點:數據冗余:在D中會保存兩份A的內容訪問不明確(二義性):因為D不知道是以B為中介去訪問A還是以C為中介去訪問A,因此在訪…

C++:49---繼承中的友元

一、友元在繼承中的關系我們在友元的文章中介紹過,友元關系不能繼承。(1)友元關系不存在傳遞性,即每個類負責控制自己的友元類或者友元函數;(2)友元關系是單向的,不具有交換性。若類…

leetcode383. 贖金信

給定一個贖金信 (ransom) 字符串和一個雜志(magazine)字符串,判斷第一個字符串ransom能不能由第二個字符串magazines里面的字符構成。如果可以構成,返回 true ;否則返回 false。 (題目說明:為了不暴露贖金信字跡,要從…

C++:52---多重繼承

一、多重繼承概念 多重繼承是指:從多個直接基類而產生派生類的能力例如:class ZooAnimal {}; //動物class Endangered {}; //瀕臨滅絕的動物class Bear :public ZooAnimal {}; //熊 //多重繼承 class Panda :public Bear, public Endangered {}; //熊貓二、多重繼承的語法 繼…

關于jsp頁面顯示的時間格式和Oracle數據庫中的格式不一樣的問題

今天我遇到一個問題:就是數據庫存的時間格式是:2013-06-28 11-00-17 ,但是通過查詢在jsp頁面上顯示出來是:2013-06-28 11-00-17.0 就是多了一個.0,之后通過查資料解決了這個問題,現在寫出來和大家分享一下…

C++:50---虛析構函數

一、引入 如果通過一個基類指針申請一個派生類對象,那么在通過這個指針釋放對象的時候,要求基類的虛函數是virtual的 。二、虛析構函數 使用方法和規則與虛函數一樣格式要求:虛析構函數要求基類與派生類中的名稱不一致只要基類的析構函數是虛函數,就能確保我們在釋放指針時…

C++:51---繼承中的構造函數、析構函數、拷貝控制一系列規則

一、繼承中的構造函數 根據構造函數的執行流程我們知道:派生類定義時,先執行基類的構造函數,再執行派生類的構造函數拷貝構造函數與上面是相同的原理二、繼承中的析構函數 根據析構函數的執行流程我們知道:派生類釋放時,先執行派生類的析構函數,再執行基類的析構函數二、…

leetcode434. 字符串中的單詞數

統計字符串中的單詞個數,這里的單詞指的是連續的不是空格的字符。 請注意,你可以假定字符串里不包括任何不可打印的字符。 示例: 輸入: "Hello, my name is John" 輸出: 5 思路:本位是字母,前面是空格(或…

Redis:15---鍵遷移(move、dump、restore、migrate)

鍵遷移概述:鍵遷移就是把數據由一個Redis遷移到另一個Redis(例如從生產環境遷移到測試環境),或者在數據庫之間進行遷移鍵遷移有三種方式:move、dumprestore、migrate下面是三種方式的比較,建議使用migrate&…

Redis:18---常用功能之(Lua腳本)

為了保證多條命令組合的原子性,Redis提供了簡單的事務功能以及集成Lua腳本來解決這個問題,本文介紹Lua,事務已經在前一篇文章介紹過了一、Lua概述 Lua語言是在1993年由巴西一個大學研究小組發明,其設計目標是作為嵌入式程序移植到其他應用程序,它是由C語言實現的,雖然簡單…