c++ primer第五版----學習筆記(十五)Ⅰ
- oop的核心思想是多型性。我們把具有繼承關係的多個型別稱為多型型別; 引用或指標的靜態型別與動態型別不同這一事實正是c++語言支援多型性的根本存在
- 當且僅當對通過指標或引用呼叫虛擬函式時,才會在執行時解析該呼叫,也只有在這種情況下物件的動態型別才有可能與靜態型別不同
- 一個派生類的函式如果覆蓋了某個繼承而來的虛擬函式,則它的形參型別必須與被它覆蓋的基類函式完全一致,且派生類中虛擬函式的返回型別也必須與基類函式匹配(當類的虛擬函式返回型別是類的本身的指標或引用時,上述規則無效)
- 派生類如果定義了一個與基類虛擬函式同名函式,但引數列表不相同的話,仍然是合法行為,編譯器會認為該函式與基類虛擬函式是相互獨立的,但這往往是把形參列表弄錯了的錯誤,編譯器發現不了,所以C++11有一個好東西,在其後加上override表示其要對基類的函式進行覆蓋,若未覆蓋,編譯器報錯,我們可以發現自己的錯誤
- 虛擬函式可以有預設實參,若函式呼叫了預設實參,則實參值由靜態型別決定,所以基類和派生類中定義的預設實參最好一致
- 某些情況下,我們不希望進行動態繫結,我們可使用作用域運算子強行指定其執行哪個版本,進行迴避虛擬函式—一般情況下是成員函式中的程式碼才需要以防止自己呼叫自身造成無限迴圈
相關推薦
c++ primer第五版----學習筆記(十九)Ⅱ
部分習題解答: 19.1、19.2: #include <iostream> #include <cstdlib> using namespace std; void *operator new(size_t size) { cout << "new(
c++ primer第五版----學習筆記(十九)Ⅰ
文章目錄 ==特殊工具與技術== 1.控制記憶體分配 1.1 過載new和delete 1.2 定位new表示式 2. 執行時型別識別 2.1 dynamic_cast運算子 2.2 typeid運算子
c++primer第五版----學習筆記(十八)Ⅱ
部分習題解答: 18.1: (a)range_error (b)exception 如果寫成throw p,則丟擲指標,是錯誤的18.2: 發生異常,所在塊之前的臨時變數都會被銷燬,v呼叫vector類的解構函式進行銷燬,並釋放相關記憶體;p指標會被銷燬,但p指向的記憶體是動態分配的,所以該記憶
c++ primer第五版----學習筆記(十八)Ⅰ
用於大型程式的工具:異常處理、名稱空間和多重繼承 特殊要求: 在獨立開發的子系統之間協同處理錯誤的能力 使用各種庫(可能包含獨立開發的庫)進行協同開發的能力 對比較複雜的應用概念建模的能力 1.異常處理: 異常處理機制允許程式中獨立開發的部分能夠在執行
c++ primer第五版----學習筆記(十五)Ⅰ
oop的核心思想是多型性。我們把具有繼承關係的多個型別稱為多型型別; 引用或指標的靜態型別與動態型別不同這一事實正是c++語言支援多型性的根本存在 當且僅當對通過指標或引用呼叫虛擬函式時,才會在執行時解析該呼叫,也只有在這種情況下物件的動態型別才有可能與靜態型別不同 一個派生類的函式如果覆蓋了某個繼承而來
c++ primer第五版----學習筆記(十六)Ⅱ
部分習題解答: 16.1: 當呼叫template時,編譯器使用實參的型別來確定繫結到模板引數T的型別,之後編譯器利用推斷出的模板引數來例項化一個特定版本的函式 16.2: #ifndef COMPARE_H #define COMPARE_H template &
python基礎教程(第三版)學習筆記(十二)
第十二章 圖形使用者介面 12.1 建立 GUI 示例應用程式 編寫一個簡 單的程式,讓使用者能夠編輯文字檔案 這個微型文字編輯器的需求如下。 1、 讓使用者能夠開啟指定的文字檔案。 2、 讓使用者能夠編輯文字檔案。 3、 讓使用者能夠儲存文字檔案。 4、讓使用者
python基礎教程(第三版)學習筆記(十一)
第十一章 檔案 11.1 開啟檔案 要開啟檔案,可使用函式open,它位於自動匯入的模組io中。函式open將檔名作為唯一必不可少的引數,並返回一個檔案物件。 from contextlib import contextmanager import sys,pprint f=open('xx.
python基礎教程(第三版)學習筆記(十八)
第十八章 程式打包 本章重點介紹Setuptools,因為這是每個Python程式設計師都要用到的工具。實際上,Setuptools 並非只能用於建立基於指令碼的Python安裝程式,還可用於編譯擴充套件。另外,通過將其與擴充套件py2exe 和py2app結合起來使用,還可建立獨立的Windo
python基礎教程(第三版)學習筆記(十七)
第十七章 擴充套件Python 這門語言功能強大,但有時候速度有點慢。 Python的目標是易於使用以及幫助提高開發速度,這種靈活 性是以犧牲效率為代價的。 但如果你真的很 在乎速度,C、C++、Java和Julia等語言通常要快好幾個數量級。 17.1 魚和熊掌兼得 本章討論確實需要進
python基礎教程(第三版)學習筆記(十六)
第十六章 測試基礎 除錯是程式設計師躲不開的宿命,是程式設計工作的有機組成部分。 本章介紹測試的基本知識。培養如何養成在程式設計中進行測試的習慣,並介紹一些可幫 助編寫測試的工具。 16.1 先測試再編碼 要避免程式碼在開發途中被淘汰,必須能夠應對變化並具備一定的靈活性,因此為程式的各個
python基礎教程(第三版)學習筆記(十四)
第十四章 網路程式設計 鑑於Python提供的網路工具眾多,這裡只能簡要地介紹它的網路功能。 本章首先概述Python標準庫中的一些網路模組。然後討論SocketServer和相關的類,並介紹 地介紹同時處理多個連線的各種方法。最後,簡單地說一說Twisted,這是一個使用Pyth
python基礎教程(第三版)學習筆記(十)
第十章 開箱即用 本章簡要介紹模組的工作原理以及如何探索模組以獲悉其提供的功能,然後概述標準庫,重點是幾個很有用的模組。 10.1 模組 使用import將函式從外部模組匯入到程式中。 ''' import math as ma Pi=3.1415926 v=ma.sin(Pi/6) pri
C# EMGU 3.4.1學習筆記(十一)示例程式:仿射變換
本示例是《OpenCV3程式設計入門》中7.4.5中的示例程式的C# + EMGU 3.4.1版,演示了以WarpAffine和GetRotationMatrix2D函式為核心的對影象進行仿射變換的操作。 using System; using System.Collect
C# EMGU 3.4.1學習筆記(十二)示例程式:直方圖均衡化(彩色影象)
本示例是《OpenCV3程式設計入門》中7.5.3中的示例程式的C# + EMGU 3.4.1版,演示瞭如何用EqualizeHist()函式進行影象的直方圖均衡化。 原書程式碼僅演示了對灰度影象的直方圖均衡化,對此我做了一些改變,從而可對彩色影象進行直方圖均衡化。 彩色
c++ primer第五版----學習筆記(十三)Ⅰ
知識點: 拷貝控制操作:拷貝、移動、賦值和銷燬 在定義一個類時,我們可以顯式或隱式的定義在此型別的物件拷貝、賦值、移動、銷燬是做什麼,主要通過五種特殊的成員函式來完成這些操作:拷貝建構函式、拷貝複製運算子、移動建構函式、移動複製運算子和解構函式 1.拷貝建構函式: 定
c++ primer第五版----學習筆記(五)
1.空語句:最簡單的語句,只包含一個單獨的分號 複合語句:指用花括號括起來的語句和宣告的序列,複合語句也被稱為塊 2.if語句: //語法形式: if (condition) statement //if、else語句 if (condition) s
《Qt5 開發與實例(第三版)》學習筆記(十二)
action spa 添加 png esb geb itl msgbox setw 1 // 4.2 Qt5 自定義對話框 2 #include <QMessageBox> 3 4 void Dialog::showCustomMsgBox() 5
python基礎教程(第三版)學習筆記(六)
第六章 抽象(函式) 6.1 懶惰是一種美德 6.2 抽象和結構 6.3 自定義函式 判斷某個物件是否可呼叫,可使用內建函式callable。格式是callable(物件)。 函式是結構化程式設計的核心。使用def(表示定義函式)語句。 ''' def fun(str_s): #
python基礎教程(第三版)學習筆記(四)
第四章 字典 字典一種可通過名稱來訪問其各個值的資料結構。這種資料結構稱為對映。字典是Python中唯一的內建對映型別,其中的值不按順序排列,而是儲存在鍵下。鍵可能是數、字串或元組。 4.1 字典的用途 i表示棋盤的狀態,其中每個鍵都是由座標組成的元組; ii儲存檔案修改時間,其中的鍵為檔名; ii