加入后院 登录
工大后院 返回首页

anlogo的个人空间 https://www.gdutbbs.com/?19366 [收藏] [复制] [分享] [RSS]

日志

const的用法

已有 527 次阅读2009-1-21 09:27 |个人分类:C++话题|

const是用于保护程序的健壮性,减少程序隐患。其用法比较复杂,总结起来又分为以下两种:
1:在定义变量时使用:
大概有下面三种常见的用法:
One:
    int const k;
    const int k;
    上面两表达式功能相同,这是最简单的用法,说明变量a是一个常变量.
Two:
    int const *k;
    const int *k;
    上面两表达式功能相同,这是很常用的用法,指向常数的指针,即指针本身的值是可以改变的,但指向的内容是不能改变的
    example:
              int i,j;
              const int *k=&i;
              *k = 100; //非法
              k = &j; //合法
Three:
     int *const k;
     常指针,即指针本身的值是不可改变的,但指向的内容是可改变的.
     example:
             int i,j;
              const int *k=&i;
              *k = 100; //合法
              k = &j; //非法
2:在函数用使用:
One:
       void func(const int);
       做为参数使用,说明函数体内是   不能修改该参数的;对不参数定义时不同的形式,可参见定义变量
       时使用方式;
Two:
      const int func();
      做为返回值使用,说明函数的返回值是不能被修改的,在取得返回值时应用const int a = func();对不同
      参数定义时使用不同的形式,可参见定义变量时使用方式;
Three:
      int func() const;
      常函数,说明函数是不能修改类中成员的值的,[注意]只能用于类的成员函数中.
 
[附] 
    const_cast  用法:const_cast<type_id> (expression)   [注意] 关键字mutable 可代替const_cast的使用[略]
  该运算符用来修改类型的const或volatile属性。除了const 或volatile修饰之外, type_id和expression的类型是一样的。
  常量指针被转化成非常量指针,并且仍然指向原来的对象;
  常量引用被转换成非常量引用,并且仍然指向原来的对象;常量对象被转换成非常量对象。
  Voiatile和const类试。举如下一例:
  class B{
  public:
  int m_iNum;
  }
  void foo(){
  const B b1;
  b1.m_iNum = 100; //comile error
  B b2 = const_cast<B>(b1);
  b2. m_iNum = 200; //fine
  }
  上面的代码编译时会报错,因为b1是一个常量对象,不能对它进行改变;
  使用const_cast把它转换成一个常量对象,就可以对它的数据成员任意改变。注意:b1和b2是两个不同的对象 

评论 (0 个评论)

facelist doodle 涂鸦板

您需要登录后才可以评论 登录 | 加入后院

Archiver|手机版|小黑屋|广告业务Q|工大后院 ( 粤ICP备10013660号 )

GMT+8, 2026-5-1 06:07

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

返回顶部