1. 程式人生 > >C與C++比較新增功能大全(完善中)

C與C++比較新增功能大全(完善中)

1、輸入流與輸出流
cin與cout為輸入輸出流,在C++中作為輸入輸出函式使用。
與scanf與printf相比,使用更加簡潔方便,不需要指定輸出內容的格式與資料型別例如%d等
2.內建函式(也叫行內函數)
內建函式在宣告及定義時函式名前要加inline作為內建函式的標誌
C++中使用內建函式會提高程式的效率,但同時會增加程式的長度,在每次呼叫內建函式的時候,編譯系統都會複製內建函式的程式碼並插入程式中,增加了程式的長度、
同時,C++規定內建函式中不允許有複雜的控制語句,例如迴圈語句及switch語句
只有那些規模較小而又頻繁呼叫的簡單函式,才適合被宣告為內建函式
3.函式過載


C++中新增了函式過載,允許用同一函式名定義多個函式,這些函式的引數個數和引數型別不同。
4.函式模板
由函式過載衍生出函式模板
定義函式模板的一般形式為:
template < typename T >
template < class T >
上面二者都可使用,一般用typename較好,因為class與C++中類的名稱有所混淆。
T為型別名,但並未指出具體為哪一個型別,在後面的呼叫中直接呼叫即可。

#include <iostream>
using namespace std
; template <typename T> T max(T a, T b,T c) { if (b > a) a = b; if (c > a) a = c; return a; } int main() { int i1, i2, i3; double j1,j2,j3; int m; double n; m = max(i1, i2, i3);//自動呼叫模板函式,此時T被int取代 n = max(j1, j2, j3);//自動呼叫模板函式,此時T被double取代 getchar(); return
0; }

5.有預設引數的函式
例如有一函式宣告為:
float area ( float r = 6.5 );
則指定r的預設值為6.5.在呼叫時:
area(); = area(6.5);
如果不想使用預設引數,則直接area(7.5);即可。
由於實參與形參的結合是由左至右順序結合的,所以指定預設值的引數必須放在形參最右端,否則出錯。
注意:
a.一個函式不能既作為有預設引數的函式又作為過載函式
b.如果函式的定義在函式呼叫之前,則應在函式定義中給出預設值
c.如果函式定義在函式呼叫之後,則必須在函式宣告中給出預設值,函式定義是可以不給出預設值
6.運算子過載
7.引用呼叫機制
8.標準模板庫
9.多型性
10.繼承
11.字串變數和字串類
在C++中提供了string類,用string類可以定義字串變數。
使用string類時,必須在前面宣告#include
字串變數可以直接用“=”賦值,也可以相互賦值,同時支援對字串的某一個字元賦值。
eg: string word = ” china”;
word[2] = ‘a’;
字串變數可以直接用=進行復制,賦值運算,也可以直接運用“+”進行連線,可以用>,<,>=,<=等關係運算符。
可以用字串變數宣告字串陣列,由字串變數組成字串陣列,每一個字串變數長度可以不同,實際上,編譯器為每一個字串變數分配4個位元組,用來儲存字串的地址而非字串本身。
歸納起來,C++對字串的處理方法有兩種:
1.字元陣列,稱為C—string方法
2.用string類定義字串變數,稱為string方法