程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> C++ 我想這樣用(二)

C++ 我想這樣用(二)

編輯:C++入門知識

C++ 我想這樣用(二)


沒錯,雖然C++曾號稱兼容C,而且很多人甚至覺得C就是C++子集,但是c腦殘粉一定知道,兩者有很大的不同!   下面這些要點是比較突出的,後期我再補充其他的:   1.關於類型轉換   C是弱類型的,至少比C++弱,在C下面很多類型轉換我們不怎麼管,編譯器也會默認,最多有些討厭的編譯器(如某軟家的)會給出警告,但是在C++下面就不一樣了,這些都是error!!你不顯示聲明,就別想跨類型!!其實這也是好事,多打幾個字母,反而代碼清晰了嚴謹了:)   Example   在C裡,你這樣寫:              int* p;           p = malloc(10 * sizeof(int));   在C++裡,你必須這樣寫:                  int* p;           p = (int *)malloc(10 * sizeof(int));       2.關於字符數組   在C裡,你可以聲明一個字符數組,長度正好是串長,即:沒有地方放‘\0’,但在C++裡,你不能這樣做:   char s[3] = "abc";(在C裡正確,在C++裡錯誤)。   我的建議是:如果你是個正常的人類,就是在C裡面你也會寫成:   char s[4] = "abc";   不過其實最好的寫法是:char s[] = "abc"; 不是嗎??       3.關於嵌套的類型定義    Example             struct S {               int a;               struct T {                   int t;               } b;               int c;               enum E { V1, V2 } e;           };             struct T x;           enum E y;   上述代碼在C裡面沒問題,這是因為S、T、E三者的作用域(Scope)相同,但是在C++裡,確實是錯誤的!在C++裡,T和E的作用域是在S裡的,想在外面使用只能S::T,這涉及到命名空間的問題,我們以後再說。   不過就算在C裡,我也會把E和T單獨拿出來定義,這種嵌套的寫法,總有鸠占鵲巢的感覺~~       4.關於枚舉類型   我們都知道,在C裡面枚舉和整型是一樣的,枚舉就是整型,於是我們這樣干:             enum RGB { red, green, blue } rgb;           ++rgb;   哦,看吧,世界多美好。然而C++的世界是殘酷的,枚舉是獨立的類型,且不支持++這類整數操作符。於是你說沒關系:"rgb=rgb+1;"就好了。很可惜。又錯了。。。是的,因為沒有顯示的進行類型轉換,於是正確的寫法:             enum RGB { red, green, blue } rgb;             rgb = RGB(rgb + 1);   雖然有的長,不過還好啦,如果你的強迫症已經達到神級了,那麼也有辦法,給RGB加上++運算符的重載吧,具體內容以後說。       5.關於注釋   //和/**/的雙注釋方案早就被C采用了,所以其實沒啥特別要注意的,不過你非要這樣寫的話:            i = j //* comment */ k ;   那麼連上帝也幫不了你了= =!

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved