1.C++的輸入輸出
| 流名 |
含義 |
隱含裝置 |
| cin |
標準輸入 |
鍵盤 |
| cout |
標準輸出 |
螢幕 |
| cerr |
標準出錯輸出 |
螢幕 |
| clog |
cerr的緩衝形式 |
螢幕 |
註:C語言要求變數的聲明部分必須在執行語句之前,而C++允許對變數的聲明放在程式的任何位置(但必須在使用該變數之前)
2.在C語言中常用#define指令來定義符號常量
C++提供了用const定義常變數的方法,例:const float PI = 3.14
區別:用const定義的常變數具有變數的屬性,有資料類型,佔用儲存單元,有地址
3.函數原型聲明:在C++中,如果函數調用的位置在函數定義之前,則要求在函數調用之前必須對所調用的函數作函數原型聲明
4.函數的重載:C++允許在同一範圍中用同一函數名定義多個函數,這些函數的參數個數和參數類型不相同,這些同名的函數用來實現不同的功能
注意:不允許參數個數和類型都相同而只有傳回值類型不同
5.函數模板:適用於函數的參數個數相1同而類型不同,且函數體相同的情況
格式:template <typename T> 或 template <class T>
例:
template <typename T>T max(T a, T b, T c){ if(b > a) a = b; if(c > a) a = c; return a;}
6.有預設參數的函數
例:float volume(float h, float r = 12.5);
函數調用:volume(45.6); 或 volume(34.2, 10.4);
註:(1)實參與形參的結合是從左至右順序進行的,因此指定預設值的參數必須放在形參表列中的最右端
(2)若需要指定預設值,則應在調用函數之前指定,且為避免混淆,最好只在函式宣告時指定預設值
(3)一個函數不能既作為重載函數,又作為有預設參數的函數
7.變數的引用
格式:typename &refName = varName;
說明:(1)對變數聲明一個引用,並不另開闢記憶體單元;在聲明一個引用時,必須同時使之初始化,即聲明它代表哪一個變數
(2)在聲明一個變數的引用後,在本函數執行期間,該引用一直與其代表的變數相聯絡,不能再作為其他變數的別名,即 int &b = a1; int &b = a2; 是錯誤的
(3)引用與其所代表的變數共用同一記憶體單元,系統並不為引用另外分配儲存空間,實際上,編譯系統使引用和其代表的變數具有相同的地址,即有 sizeof(a) = sizeof(b)
(4)對引用的初始化,可以用一個變數名,也可以用另一個引用
用途:(1)將引用作為函數參數:將變數名作為實參時傳給形參的是變數的值,在執行函數期間形參值發生變化並不傳回給實參
例:
#include <iostream>using namespace std;void swap(int &a, int &b){ int temp; temp = a; a = b; b = temp;}int main(){ int i = 3, j = 5; swap(i, j); cout << "i = " << i << " j = " << j << endl; return 0;}
注意:(1)不能建立void類型的引用
(2)不能建立引用的數組,因為數組名只代表數組首元素的地址,本身不佔有儲存空間
(3)可以將變數的引用的地址賦給一個指標,此時指標指向原來的變數
(4)可以建立指標變數的引用
例:int i = 5; int *p = &i; int* &pt = p; cout << *pt; 此時輸出5
(5)可以用const對引用加以限定,不允許改變該引用的值,但是它並不阻止改變引用所代表的變數的值
這一特徵常用於作函數的形參,來保護形參的值不被改變
(6)可以用常量或運算式對引用進行初始化,但此時必須用const作聲明
此時編譯器處理方式:產生一個臨時變數,用來存放該運算式的值,引用是該變數別名
8.內建函數:在編譯時間將所調用的函數的代碼嵌入到主調函數中,又稱內嵌函式
一般對規模很小且使用頻繁的函數使用,以大大提高運行速度
例:
inline int max(int a, int b, int c){ if(b > a) a = b; if(c > a) a = c; return a;}
9.範圍運算子:C++提供範圍運算子 :: ,它能指定所需要的範圍
例:
#include "iostream"using namespace std;float a = 1;int main(int argc, char const *argv[]){ int a = 2; cout << a << "\t" << ::a << endl; return 0;}
此時輸出: 2 1
10.字串變數
C++標準庫中聲明了一個字串類,在使用string類功能時,必須在本檔案的開頭將C++標準庫中的string標頭檔包含進來,即 #include <string>
(1)對字串變數的賦值:
例:string str, tmp = “China”;
str = “Canada”; 或 str = tmp;
在定義字串變數不需指定長度,它的長度隨其中的字串長度而改變,且不儲存末尾的\0
(2)字串變數的輸入輸出:cout << string1; cin >> string2;
(3)字串變數的運算:複製直接用等號,字串串連用加號,字串比較直接用關係運算子
例:str = string1 + string2;
(4)字串數組:並不要求每個字串元素具有相同的長度
11.動態分配/撤銷記憶體的運算子 new 和 delete
注意:如果由於記憶體不足等原因而無法正常分配空間,new會返回一個null 指標NULL
new 和 delete 是運算子,不是函數,new要和delete配合使用