1.引用必須在宣告時初始化,並且初始化後不能改變其值,類似於是乙個指標常量,而指標可以先宣告再初始化,並且指標指向的值可以隨時改變。
2.如果帶引數列表的函式,必須從右向左新增預設值,也就是說如果函式引數列表中某乙個引數設定為預設值,那麼其右的所有引數必須提供預設值
int test(int a,int b=2,int c=3); //ok
int test1(int a,int b=2,int c); //invalid,int c中的c必須要初始化,因為b已經初始化了
3.c++多型性體現在兩個方面:編譯多型性與執行多型性
編譯多型性:主要是函式過載,即根據函式引數個數以及型別的不同選擇合適的呼叫函式;
(1)非const值當做const值使用是ok的,但是const值不能當做非const值使用;
(2)兩個函式如果引數列表個數與型別一樣,只有返回值型別不一樣是不可以的,如:
int test(int a,double b);
double test(int a,double b);
這樣是不可以的,只有返回值型別不同是不可以過載的。
void test(int &x); -------------1
void test(const int &x); -----------------2
void test(int &&x); -----------------3
int a=100;
const int b=&a;
test(a); --------------------1
test(b);----------------------2
test(a+b);-------------------3
過載使用這三種引數的函式時,選擇呼叫最匹配的版本,如果函式3未被定義,那麼test(a+b)呼叫的是函式2,因為其中b是const型別的資料,非const型別資料可以當做 const型別資料使用,但是非const型別資料不能當做const型別資料使用。
執行多型性:主要是虛函式方面,即根據構造物件的虛函式表呼叫相應的類成員函式。
C 學習隨筆
過載 通過函式過載實現類的多型特性,其特徵 1 同一作用域內 同一類中 2 相同的函式名。3 引數與返回型別不同 僅返回型別不同,不是過載函式。4 virtual關鍵字不影響。覆蓋 通過函式覆蓋實現類的繼承特性,其特徵 1 不同作用域 非同一類中 2 函式名 引數都相同。3 基類中的函式須有virt...
C 學習隨筆
1.strlen 方法 include 不含 strlen 方法,若要使用應當引入 標頭檔案 2.vs調整字型大小 ctrl shift 或 3.控制輸出的精確度 include 4.程式執行出現 燙燙燙燙燙燙燙燙燙燙燙燙燙燙燙燙 這種亂碼最常見的地方是visual studio裡。visual s...
c 學習 隨筆五
1 c stl中提供了順序容器和關聯容器。vector,list,deque為順序容器 map,set,multiset,multimap為關聯容器。其中每種容器均提供預設的建構函式來初始化容器物件。vectorstr 5 在這句 中,首先容器使用string的預設建構函式建立了乙個臨時值來建立容器...