C++ 备忘录 ( 持续更新中... )
2019獨角獸企業重金招聘Python工程師標準>>>
Tip 1:???? #include包含頭文件的問題
新的編譯器格式:
#include <iostream> using namespace std;舊的編譯器格式:
#include <iostream.h>注:舊的編譯器格式中,包含頭文件后,不添加 “using namespace std”
?
Tip 2:Windows環境中 ,程序運行時界面自動關閉、一閃而過的問題
解決方法:在main() 的return 語句前添加 cin.get() 語句;
有時需添加兩行這樣的代碼。
注:cin.get() ,可以讀取空格、制表符和換行符。
?
Tip 3:C++程序 中也可以使用 C 語言中的輸入輸出函數,只需包含頭文件”stdio.h”
?
Tip 4:訪問命名空間std的方法:
???????? M1:將 using std namespace; 放在函數定義之前,讓文件中所有的函數都能夠使用名稱空間 std 中所有的元素
???????? M2:將 using std namespace; 放在函數定義中,這樣該函數能使用命名空間中所有的元素
???????? M3:在特定的函數中使用 using std::cout; 這樣的命令而不是 using std namespace; 讓該函數能夠使用指定的元素,如cout
???????? M4:完全不使用變異命令 using , 在需要使用名稱空間 std 中的元素時,使用前綴 std:: ,如下所示
std::cout << “In This Way” << std::endl ;Tip 5:C++中的語句類型:
l? 聲明語句——定義函數中使用的變量的名稱和類型
l? 賦值語句——使用復制操作符 (=) 給變量賦值
l? 消息語句——將消息發送給對象,激發某種行動
l? 函數調用——執行函數.被調用的函數執行完畢后,程序返回到函數調用語句后面的語句
l? 函數原型——聲明函數的返回類型、函數接受的參數數量和類型
l? 返回語句——將一個值從被調用的函數那里返回到調用函數中
?
Tip 6:拼接字符串常量
???????? C++允許拼接 “字符串常量”,任何兩個由空白(空格、制表符、換行符)分隔的字符串常量都將自動拼接成一個。
下列語句等效
cout << “Hello World” << endl;cout << “Hello” “ World” << endl;cout << “Hello” “ World” << endl;cout << “Hello”“ World” << endl;?
Tip 7:sizeof() 與strlen() 判斷字符數組長度的區別
l? sizeof() 返回值是 整個數組的長度;而strlen() 返回的是字符數組中字符串的長度(strlen() 只計算可見字符,不把空字符 ‘\0’ 計算在內),而不是數組的長度。
如:存放 ”cosmic” 時,字符數組長度應不小于 strlen( cosmic ) + 1 。
?
Tip 8:空指針,當計算機沒有足夠內存而無法滿足new 的請求時,new將返回。
???????? C++中值為的指針被稱為空指針(null pointer),C++確??罩羔槻粫赶蛴行У臄祿?。
???????? 因此,空指針常被用來表示操作符或函數失效。
?
Tip 9:數組名 和 指針的差別:
???????? 數組名是常量,存放的是數組首個元素的地址,不能修改數組名的值;
???????? 指針是變量,可以改變它的值。
?
Tip 10:枚舉 的取值范圍
???????? 上限:找到枚舉量的最大值,然后找到大于這個最大值的、最小的2的冪,將它減去1,
得到的便是上限
???????? 下線:找到枚舉量的最小值,如果它小于,則下限為;若它小于,先忽略符號,按照上面的方法,得到上限,再加上負號,就得到下限。
?
Tip 11:cin 輸入輸出的問題
???????? 發送給cin的輸入被緩沖,也就是說,只有當用戶按下回車鍵后,才會將以輸入的內容發送給程序;而且,cin 會忽略輸入的空格和換行符。
如下列程序中:
輸入:Hello world this is my # test program
輸出:Helloworldthisismy
若要獲取輸入的空格或換行符,應使用cin.get (char) ;
?
??注:使用cin 讀取字符時,會忽略空格;
???????? 若要檢查每個字符(包括空格、制表符、換行符),應使用cin.get( ch )。
?
Tip 12:#define 和 typedef 的區別
下列語句中,?pa是一個指針,pb是一個整型變量
#define INT_POINTER int *INT_POINTER pa, pb;?? ??
Tip 13:關于const 指針的問題
???????? 如果關鍵字const 出現在 * 的左邊, 表示被指物是常量;
如果關鍵字const 出現在 * 的右邊, 表示指針自身是常量
如果出現在 * 的兩邊, 表示 被指物 和 指針 兩者都是常量.?
int const * pi; const int * pi;兩種寫法一樣, pi指向一個常量
???
Tip 14:將引用參數聲明為常量數據的引用的理由
l? 使用const 可以避免無意中修改數據的編程錯誤
l? 使用const 使函數能夠處理 const和 非const 實參,否則將只能接受與非const數據
l? 使用const 引用使函數能夠正確生成并使用臨時變量
Tip 15:何時使用引用參數
l? 程序員能夠修改調用函數中的數據對象
l? 通過傳遞引用而不是整個數據對象,可以提高程序的運行速度。
?
注:當數據對象較大時 (如結構和類對象),第二個原因最重要。這些也是使用指針參數的原因。 這是有道理的,因為,引用參數實際是基于指針的代碼的另一個接口。
?
Tip 16:何時用指針?何時用引用?
對于使用傳遞的值而不做修改的函數:
l? 如果數據對象很小,如內置數據類型或小型結構,則按值傳遞。
l? 如果數據對象是數組,則使用指針,因為這是唯一的選擇,并將指針聲明為指向const的指針
l? 如果數據對象是較大的結構時,則使用const指針或const引用,以提高程序效率,這樣可以節省復制結構所需的時間和空間
l? 如果數據對象是類對象,則使用const 引用。類設計的語義常常要求使用引用,這是C++新增這項特性的主要原因,因此,傳遞類對象參數的標準方式是按引用傳遞。
?? 對于修改調用函數中數據的函數:
l? 如果數據對象是內置數據類型,則使用指針。如果看到諸如fixit (& x) 這樣的代碼,(其中 x 是int型),則很明顯,該函數將修改x
l? 如果數據對象是數組,則只能使用指針。
l? 如果數據對象是結構,則使用引用或指針
l? 如果數據對象是類對象,則使用引用
?
Tip 17:在類對象中,賦值 !=? 初始化
???????? C++規定,對象的成員變量的初始化動作發生在進入構造函數本體之前。
???????? 因此,正確的初始化方式為:
???
class Apple { public :…string color;Apple();Apple(string tmp):color(tmp) {} // 初始化 ( initializations )// 構造函數本體不必有任何動作private:… };Tip 18:? C++默默編寫并調用的函數
class Empty { public :Empty() { … } ????????????????????????????// default 構造函數Empty(const Empty& rhs) { … } ????????????// copy 構造函數~Empty() { … } ????????// 析構函數Empty& operator=(const Empty& rhs) { … } ???// copy assignment 操作符. };只有當這些函數被需要(?被調用?),它們才會被編譯器創建出來。
程序中需要它們是很平常的事。下面的代碼導致上述每一個函數被編譯器產出:
Empty e1;?????????// default 構造函數// 析構函數 Empty e2 ( e1 );????????????// copy構造函數 e2 = e1;????????????????????// copy assignment 操作符Tip 19:??類中的 static類型函數不能接收 this 指針
轉載于:https://my.oschina.net/gupengspace/blog/15430
總結
以上是生活随笔為你收集整理的C++ 备忘录 ( 持续更新中... )的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [Java] super关键字:引用父类
- 下一篇: 生活的色彩——摄影作品欣赏