cpp_3_1_const 关键字

  1. Overview
  2. constant variables 常量
  3. lvalue reference to const const值的左值引用
  4. Pointers with a const keyword 指针和 const关键字
  5. const object & const function const对象和const函数

Overview

1.constant variables 常量
2.lvalue reference to const const值的左值引用
3.Pointers with a const keyword 指针和 const关键字
4.const object & const function const对象和const函数

constant variables 常量

The const variable cannot be left un-initialized at the time of the assignment.
The const variable cannot be assigned value anywhere in the program.

intuitively,
1.用 const 修饰的变量必须得初始化, 且一旦修饰完再也不能修改

lvalue reference to const const值的左值引用

1.我们不能对一个 const 值进行引用, 但是我们想要创建一个常量的引用怎么办? (常规下) 左值引用不行, 因为引用可以修改变量的值
2.通过在生命左值引用时使用const关键字, 告诉左值引用将引用的对象设置为const, 这种引用叫做const值的左值引用, 或者 const 引用

#include <iostream>
using namespace std;

int main() {
  const int x = 5 ;     // x 是是一个不可变的变量
  int& ref = x;         // 错误, (常规) 引用不能引用一个不可变的变量
  const int& ref2 = x;  // 正确, ref 是对 const值的左值引用
  cout << ref2 << endl; // 可以访问 const 引用
  ref2 = 6;             // 错误, 因为是引用const值 所以引用的值不能修改
  return 0;
}

Pointers with a const keyword 指针和 const关键字

Pointers can be declared with a const keyword. There are three possible ways to use a const keyword with a pointer, which are as follows:

1.When the pointer variable point to a const value:
当指针变量指向常量, const声明在*的左侧, 这时候const修饰的是变量;

const data_type* var_name;

2.When the const pointer variable point to the value:
当常指针指向变量时, const声明出现在*的右侧, 这时候const修饰的是指针(地址);

data_type* const var_name

3.When const pointer pointing to a const variable:
当常指针指向常量

const data_type* const var_name

intuitively,

  • 指针可以和const关键字同时声明, 具体来说有三种可能的情况

1.指针变量指向常量, 不能改值, 也就是说不能使用

*p = 10;

这种方式修改

*p

但是可以改指针比如

int* const p = &a;
p = &b;

2.常指针指向变量, 不能改指针, 也就是说使用

int* const p = &a;

之后不能

p = &b;

但可以改值比如

*p = 12;

3.常指针指向常量, 上述两种情况的结合体, 既不让改值, 也不能改指针;

const object & const function const对象和const函数

An object declared as const cannot be modified and hence, can invoke only const member functions as these functions ensure not to modify the object.

A function becomes const when the const keyword is used in the function’s declaration. The idea of const functions is not to allow them to modify the object on which they are called. It is recommended practice to make as many functions const as possible so that accidental changes to objects are avoided.

intuitively,
1.const 可修饰成员函数, 用 const 成员函数的目的是调用该函数时强制不让修改对象;
2.一个被 const 修饰的对象无法被修改, 因此这种被 const 修饰的对象值只能调用它的 const 成员函数, 因为这些 const 成员函数不能够修改对象;
3.实际 coding 中建议尽量多使用 const function , 那么就能尽可能少的发生意外性地修改对象;


转载请注明来源, from goldandrabbit.github.io

💰

×

Help us with donation