54)函式過載和類屬機制所實現的叫做編譯時多型;執行時多型指的是基類中定義虛函式,在派生類中對該虛函式進行重定義,要通過基類指標(或基類引用)來呼叫虛函式;
55)除了建構函式之外,任意非static成員函式都可以根據需要設計為虛函式。
56)當指標呼叫類的虛函式時,指標是動態繫結所指向的類的物件(基類或者派生類)。
57)通過基類引用呼叫虛函式同樣也採用動態繫結。例如:void printidentity( base& obj);
58)指標和引用的靜態型別與動態型別可以不同,這是c++用以支援多型性的基石。
59)虛析構函式:如果指標的靜態型別是指向基類的,在派生類中呼叫非虛析構函式就會呼叫基類的析構函式而不是派生類的析構函式,有可能導致不正確的物件撤銷操作。例如:
base *ptr;
ptr = new dclass;
...//
delete ptr;
60)純虛函式就是在一般虛函式的宣告上加 = 0。包含純虛函式的稱為抽象類。
61)抽象類有如下特性:
只能用作其他類的基類;
不能用於直接建立物件例項;
不能用作函式的形參型別和返回值型別;
不能用於強制型別轉換;
可宣告抽象類的指標和引用;
62)如果派生類沒有對換象類中的全部純虛函式進行重定義,則該派生類也是乙個抽象類。
63)try{}....catch// throw
64)auto_ptr類用於為動態分配的物件提供針對異常的安全性,使得即使在發生異常的情況下,也能避免記憶體洩露。auto_ptr是模版類,有以下三種方式建立物件:
auto_ptrap;
auto_ptrap (ptr);
auto_ptrap2 (ap1);
auto_ptr類只能用來管理由new操作返回的單個物件,不能管理動態分配的陣列。
例如new了乙個新的類的例項,用auto_ptr管理該物件,在函式異常終止時,auto_ptr可以撤銷該動態分配的類物件,呼叫相應的析構函式。
65)c++中的模板包括類模板和函式模板。
66)templeate
返回值型別 函式名 (形式引數列表)
67)函式模板例項化的過程中不進行常規隱式型別轉換。
68)自定義名字空間:
namespace 名字空間名
69)函式模板也可以過載,在編繹時根據給定實形參匹配(完全)的過載函式,即靜態繫結;否則使用模板判斷是否匹配;再者與隱式轉換的過載函式去匹配。
70)類模板的主要用途是定義容器資料結構。。
71)由於例項化類模板成員函式時使用物件的模板實參來確定函式的模板形參,所以呼叫類模板成員函式時允許對函式實參進行隱式轉換。
72)模板編譯有兩種模式:包含編譯模式和分離編譯模式;
73)包含編譯模式:在標頭檔案中定義模板,在另乙個.cpp檔案去實現模板,但是需要在標頭檔案中用預處理指令#include 包含實現檔案。
74)分離編譯模式中標頭檔案(.h)和與實現檔案(.cpp)之間的包含關係是常規的實現檔案包含標頭檔案,而不是像包含編譯模式那樣,由標頭檔案包含實現檔案;但是,需要在實現檔案中新增乙個類模板宣告來指出該模板為匯出的,例如:
export template class stack;
#include "genericstack.h"
75)非型別模板形參:也是由型別標標符和形參名構成,在對模板進行例項化時,非型別形參由相應模板實參的值代替。
例:template
void printvalues( t (&arr) [n] )
int intarr[6] = ;
printvalues(intarr);
例2:類模板……stackstack;
C程式語言學習筆記(4)
還記得基礎 一 中提到了一點 的簡化嗎?將多個連續的空格用乙個空格代替的程式第二個版本。flag c 由於本人的c語言水平有限,還談不上能分析 的優化功能,目前就以簡化來分析自己 c語言心得。這篇只是簡單的介紹一下可以用簡潔的語言來實現功能,鍛鍊我們的c語言思維能力。先看乙個病毒程式,哈哈哈!也算是...
C程式語言 筆記
第二章 型別符號表示式 2.9 按位與 可用於遮蔽某些二進位制位 如 n 0177 按位或 可以將某些位置1 如 n 011 按位取反 可以用於如將後六位置0 n 077 這樣的用法比 n 0177700這樣的表示式好很多,前者可移植性強。左移右移的右值不能為負 return x p 1 n 0 2...
《C語言程式設計》筆記
2.stdio是standard input output 的縮寫,即標準輸入輸出。有關輸入輸出的函式的格式均定義這裡 3.float 4個位元組,double 8個位元組,short 2個位元組,int和long 4個位元組 這裡指的是vs,有一些軟體不一樣 4.314.159 規範化的指數形式為...