程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> C++中的C++關鍵字淺析

C++中的C++關鍵字淺析

編輯:C++入門知識

C++語言中,然後就總結了許多C++關鍵字,如果不使用常引用、指針,則須用const_cast<>進行轉,指向字符char的常指針經常用來表示字符串,像windows中的LPCSTR就是const char *。

1. 修飾常量

最基本的用法,用const修飾一個變量,表示這是一個常量,這種用法可以代替C語言裡面的宏定義。注意要在聲明時初始化,如果是類的數據成員,則在構造函數的初始化列表中初始化。

  1. const int a=999;    //定義了常量a,代替宏定義  
  2. //const int b;        //錯誤,常量定義時要初始化  
  3. extern const int c;    //外部定義的常量不用初始化了  
  4. int const d=0;        //與const int等價,寫法習慣不同而已  
  5. const long e=0;        //同理,把int換成char、long、類是一樣的  
  6.  
  7. class Cls  
  8. {  
  9. public:  
  10.     Cls(int a,int b):_a(a)    //常數成員要在初始化列表初始化  
  11.     {  
  12.         _b=b;  
  13.     }  
  14. private:  
  15.     const int _a;  
  16.     int _b;  
  17. }; 

2. 修飾引用,指針

對一個C++關鍵字的引用或指針要用常指針,也就是不能修改所引用、指向的變量。如果不使用常引用、指針,則須用const_cast<>進行轉換。指向字符char的常指針經常用來表示字符串,像windows中的LPCSTR就是const char *。

  1. const int &g=a;            //a的內容不能改,所以ga的引用)也是const  
  2. //int &h=a;            //錯誤  
  3. int &i=const_cast<int&>(a);    //使用const_cast<>()把常量轉成非常量  
  4. int const &j=a;            //與const int &等價,寫法習慣不同而已  
  5.  
  6. const int *k=&a;        //a的內容不能改,所以ka的指針)也是const  
  7. int const *l=&a;        //與const int *等價,寫法習慣不同而已  
  8. //int *m=&a;            //錯誤  
  9. const char *n="string";        //字符串“string”內部字符不能改變了  
  10. char *o="string2";        //字符串“string2”可以修改 

3. 修飾對象

如果修飾的是一個對象,則表示該對象的數據成員均為常量,並且只能調用該對象的常成員函數,這一點在後面解釋。綜合1、2、3條得出,const修飾符表示所修飾的內存區域被上了鎖,不能修改。

對一個對象的常引用經常用來函數傳參,當函數參數為對象是,直接按值傳參會調用對象拷貝構造函數,復制對象,對程序效率造成影響,所以一般按引用傳參,為了不改變傳入的參數,要加const表示是常引用。

  1. const int &g=a;            //a的內容不能改,所以ga的引用)也是const  
  2. //int &h=a;            //錯誤  
  3. int &i=const_cast<int&>(a);    //使用const_cast<>()把常量轉成非常量  
  4. int const &j=a;            //與const int &等價,寫法習慣不同而已  
  5.  
  6. const int *k=&a;        //a的內容不能改,所以ka的指針)也是const  
  7. int const *l=&a;        //與const int *等價,寫法習慣不同而已  
  8. //int *m=&a;            //錯誤  
  9. const char *n="string";        //字符串“string”內部字符不能改變了  
  10. char *o="string2";        //字符串“string2”可以修改 

4. 另外一種const修飾指針的方法

也就是著名的const char *和char * const的區別的問題。const char *前面說過,意思是常指針,char*所指的內存區域不能被修改,用來表示字符串。而char * const的意思指針所指向的位置不能修改,C++關鍵字也就是該指針不能指向其他內存區域了,這和引用很像,char * const相當於char &,所以常引用const char &相當於const char * const,也就是指針指向誰不可變,指針指向的內容也不可變。注意const是寫在了*的前面還是後面,這是唯一區別,char const *的意思和const char *是一樣的。

  1. C與C++中標准輸入實現方式上的一點區別
  2. C++編譯器如何對Const常量進行分配存儲空間
  3. C++庫設計的基本構思與方法
  4. 玩轉C++語言的幾種方法
  5. 如何更好的進行C++代碼編制

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