搜索
您的当前位置:首页正文

const关键字 一个例子

来源:爱go旅游网


“试图将一个非const对象的指针指向一个常量对象”的动作都将引起编译错误,const对象的地址只能赋值给指向const对象的指针,但是指向const对象的指针可以被赋以一个非const对象的地址。

注意这三者区别:
C++代码


这段代码:
C++代码
  1. using namespace std;   
  2. const int ival = 1024;   
  3. const int *const &pi_ref = &ival;   
  4. int _tmain(int argc, _TCHAR* argv[])   
  5. {   
  6.     return 0;   
  7. }  


如果这样定义就会出错:
C++代码
  1. const int *&pi_ref = &ival;  


定义int*为T,上面的代码等价于:
C++代码
  1. const T &pi_ref = &ival;  


编译器会这样来处理这段赋值计算:
C++代码
  1. T temp;   
  2. temp = &ival;           
  3. const T &pi_ref = temp;  


这里temp是"int *"类型,编译器不能强制把"const int *"转变为"int *"类型,原程序没有问题,是因为编译器这样处理了,定义"const int *"为T:
C++代码
  1. T temp;   
  2. temp = &ival;           
  3. const &pi_ref = temp;  


这样就解决了之前类型不匹配的赋值问题。

因篇幅问题不能全部显示,请点此查看更多更全内容

Top