C++編程注意問題__Linux

來源:互聯網
上載者:User

1、當用兩個迭代器初始化string類型時,如:string str(str1.begin(),str1.begin()+5),實際上,以上是一個前閉後開的區間,也就是說,str1,begin()+5所指向的字元並沒有被複製。

2、void * memset ( void * ptr, int value, size_t num );用value初始化ptr所指向的前num地區,一種初始化方法。

3、判斷兩個浮點數類型的變數是否相等不要用a==b形式,而應該判斷兩個數絕對值之差是否小於一個閥值。

在代碼中對浮點數據類型直接使用== 、<= 、>=、 !=等運算子進行比較都是不正確的。正確的方法應該是 將其差或和於小數進行比較 。

4、數組指標和指標數組傻傻分不清楚:int *p[],首先需要明白[]的優先順序高於*,p先和[]結合,說明其是一個數組,再和*結合,說明數組裡的變數都是指標;int (*p)[],p先和*結合,所以p是一個指標,再和[]結合,說明指標指向的都是數組。

5、遇到字串,優先使用string;遇到會變的數組,優先使用vector;能用stl就不要自己寫。

6、size_t類型使用特別注意,其不可能為負,所以不要犯size_t t;while(t>=0){--t};這樣的錯誤,因為t永遠也不可能為負。

7、判斷一個整數是否為奇數,用x%2!=0,不要用x%2==1,因為x也可能為負數。

8、用完new後一定要用delete,它們和(),{},[]一樣,都是成對出現的。

9、if(t)、while(t)等等,後面省略的都是“!=0/NULL” ;true為1,false為0;a==b這種形式,相等(為真)返回的是1,不相等(為假)返回的是0;

10、STL標準模板庫是C++標準庫的一部分,C++標準庫還有HP,SGI等實現的STL版本,STL標準模板庫中的絕大部分都是在SGI中實現的;不過,在使用時不用管這麼多,STL標準庫的標頭檔是沒有副檔名的,直接包含相關標頭檔即可;STL中有很多實用的演算法,熟悉其使用可以節省很多時間,而且STL實現的版本效能肯定不會比自己寫的差到哪去。

11、 private:只能由1.該類中的函數、2.其友元函數訪問。 不能被任何其他訪問,該類的對象也不能訪問。 protected:可以被1.該類中的函數、2.子類的函數、以及3.其友元函數訪問。 但不能被該類的對象訪問。 public:可以被1.該類中的函數、2.子類的函數、3.其友元函數訪問,也可以由4.該類的對象訪問。  註:友元函數包括3種:設為友元的普通的非成員函數;設為友元的其他類的成員函數;設為友元類中的所有成員函數。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.