您的位置:首页 > 编程语言 > C语言/C++

C++ 中的const用法整理

2015-12-26 11:39 441 查看
     const在C++中是一个十分重要的修饰符,而它的用法在不同的也有很多种,除了我们常用的,还有一些不常用的。今天一并全部整理。const 是对变量或对象起保护作用,防止变量或对象被修改。下面来讲解其中的用法。

  1. 变量和const的关系  

      举例说明:const int a = 3; 表示变量a为const 类型常量,即a无法被修改。其中的int是变量类型的借代,但不包括指针,指针下面再讲。其中 const int a 和int const a 用法上没有区别,都是用来修饰a这个变量的。

   2.指针和const的关系

      指针和const的关系总共有3中,分别为:
const int* a = &b;或int const *a = b; 两者为等效
        int* const a = &b;
       const int* const a = &b;
     我们将这个分为const在*号前和*后,*前就表示指针所指的变量时const常量。*后就表示指针本身就是const 常量。其他即可不管。上述第一个即指针a指向的变量时一个const常量,而第二个则表示指针变量a为const常量。第三个当然就是前面两种的结合。用的很少。

   3.const和成员函数的关系

const 与传入参数
       举例说明:void input(const int a,const int b);代表的传入的参数a和b为const常量,在函数内部不会被修改。用作保护传入参数防止被函数内部的操作修改。

const 与 返回值
       对于一般函数而言,返回值其实没有添加const的必要,例如 int getresult();一般都是使用返回值进行左值运算,而getresult() = 3;这种用法是错误的。那么,这个const与返回值有何作用呢?我们举例说明

class testDemo
{
public:
int a;
int b;
public:
int &getResult()
{
return a;
}
}

上述代码中,我们是能够执行 getResult() = 3;这样的操作的,因为函数 int &getResult();返回的是当前类成员变量a的引用。即返回的是成员变量a。而getResult() = 3;的含义就是 testDemo::a = 3;因此,这个时候,添加const 在返回值之前,就是保护这个成员变量不被修改。至于添加引用本身就是为了能够对成员变量进行变相的赋值,而在此添加const 则是阻止它的赋值。其实还是有些矛盾的。

函数尾部+const

     这种情况用的很少,我们依旧举例说明:

class testDemo
{
public:
int a;
int b;
public:
int &getResult()
{
return a;
}
int read()const
{
return b;// 返回成员变量b的值
}
}
   上述代码中,在int read();函数后面添加了const修饰符,起到什么样的作用呢?其实,这个函数是保护在read()函数内部,类的成员变量不被修改,是所有的成员变量均不能被修改。这个函数入口处没有指定具体变量。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: