c++学习笔记之基础篇
生活随笔
收集整理的這篇文章主要介紹了
c++学习笔记之基础篇
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
這個系列整理了一下學習c++的知識點,本篇簡單提及一些基礎的東西,涉及到一些具體的知識后面的篇章會細說。
1、基本類型取值范圍
在c++中,int、long、double、short、float等的取值范圍不是固定的,是與系統有關的,與Java不同。2、引用參數:
在參數類型后面加&即可,如: int &count 引用參數與原參數指向同一地址,是原參數的別名而已。與傳值參數的區別: int m = n; int &m = n; 第一條是值參數,將n的值賦予m,m和n沒有關系。 第二條是引用參數,將n的引用賦予m,m只是n的別名,當n或m值改變時另外一個也會跟著改變3、防止“==”和“=”混淆
在c++中,如果“==”和“=”使用錯誤(如該使用“==”的地方使用了“=”),由于c++和Java不同,很多時候并不報錯。比如在if判斷語句中 if(n = 1) 并不會報錯(在Java中就會報錯),因為c++中任何非零值都當成true。 為了防止混淆,在“==”語句中一般將變量放在右邊,如: 7==n 這樣的話當寫錯成“7=n”的時候編輯器就會報錯。4、默認實參
默認實參:函數的某個參數不經常使用,可以給函數形參一個默認值,在調用該函數時可以忽略這個參數。 默認實參必須是函數參數列表最靠右邊的參數。當調用具有多個默認實參的函數時,如果省略的實參不是形參列表中最靠右的參數,那么該實參右邊的所有參數也必須被省略。如: 函數原型 int volume(int length = 1, int width = 1, int height = 1); 調用 volume() volume(10) volume(10, 8) volume(10, 8, 2) 都是可以的。5、一元作用域和二元作用域
作用域運算符(::) 當局部變量和全局變量有相同名字時,用一元作用域分辨運算符來區分。 在局部變量的作用域中,直接使用變量則使用的是局部變量,而加上(::)來使用變量則使用的是全局變量,如: int number = 10; void get(){int number = 1;number = 2; //這時是給局部變量number賦值::number = 3; //這時是給全局變量number賦值 } 當局部變量和類作用域變量有相同名字時,用二元作用域分辨運算符來區分。 與上面類似,加上(類型::)來使用變量是類作用域變量。 注意區分類作用域變量和全局變量,全局變量不在類內部。6、重載與默認參數
當函數有默認參數時,重載時要格外注意,防止出現二義性。如: 函數原型 int volume(int length = 1, int width = 1, int height = 1); 重載函數 int volume(int length, int width) 這樣的話當調用volume(2, 3)時編譯器就不知道選擇哪個函數。7、函數模板
所謂函數模板實際上是建立一個通用函數,其涵涵素類型額形參類型不具體指定,用一個虛擬的類型來代表,這個通用函數就稱為函數模板。 凡是函數體相同的函數都可以用這個模板來代替,不必定義多個函數,只需要在模板中定義一次即可。在調用函數時,系統會根據實參的類型來取代模板中的虛擬類型,從而實現了不同函數的功能。 類似java中的泛型。詳細見:C++中函數模板的用法詳細解析_There is a Bug!!!-CSDN博客 定義函數模板的一般形式為:template <typename T>或者template <class T> 例如: template<typename T> T n_add(T a,T b){} 可以替代: int n_add(int a,int b) double n_add(double a,double b) 等函數,不必重復定義這么多函數了。8、求值順序
c++中沒有指定大多數運算符其操作數的求值順序。只明確指定了“&&”、“||”、“,”、“?:”這四種運算符的操作數的求值順序。 所以不能直接認為操作數的順序是從左向右的,不同的編譯器可能順序不同。 如: int c; int a(){return c + 2; } int b(){return c++; } a() + b(); 不能直接認為a()一定在b()前運算,所以在做改變了操作數中自身值得運算一定要格外小心。9、常量的聲明和賦值
使用const限定符聲明一個常量變量,常量變量必須在聲明時用一個常量表達式來初始化,而且之后不能修改。 聲明常量是沒有賦值,是一個編譯錯誤。 在可執行語句中給常量變量賦值也是一個編譯錯誤。10、setfill
填充指定字符,是粘性的。所以一條語句中setfill后面的都會進行填充。 注意:因為是粘性的,所以setfill之后如果不再需要填充一定要恢復。11、拷貝構造函數
必須以引用的形式接收參數,而非值,否則會無窮遞歸。 因為如果是值的形式,在調用拷貝構造函數時,會傳一份拷貝,這樣又調用了拷貝函數,產生了無限遞歸。12、虛懸指針
如果兩個對象都指向同一內存,一個對象回收時析構函數會刪除這塊內存的分配。另外一個對象就變成了虛懸指針,會引起運行錯誤。13、函數返回局部變量
返回局部變量引用或指針是常見的錯誤,因為局部變量在函數完成就回收了。?
總結
以上是生活随笔為你收集整理的c++学习笔记之基础篇的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C++中函数模板的用法详细解析
- 下一篇: c++学习笔记之数组及vector