C++ 中的 const 关键字

Migel Hewage Nimesha 2023年10月12日
  1. 在 C++ 中声明 Const 变量
  2. 在 C++ 中使用带有指针的 const
  3. C++ 中指向 const 变量的指针变量
  4. 指向 C++ 中值的 const 指针变量
  5. C++ 中指向 const 变量的 const 指针变量
  6. C++ 中的 const 成员函数和 const 对象
C++ 中的 const 关键字

const 关键字代表 C++ 中的常量,用于在整个程序中使特定值/值保持不变。

一旦变量/对象/函数被声明为稳定的,编译器将不会让程序员在程序的其余部分修改分配的值。

它确保程序在执行期间不间断地运行。如果程序员稍后尝试更改该值,编译器将显示编译错误。

const 的主要优点是它允许特定值/值在整个程序中保持不变。如前所述,它还将使编译器能够进行原本不可能的特定优化。

const 关键字可以在程序中以特定的不同方式使用,以满足不同的编程需求。

在 C++ 中声明 Const 变量

将变量设为常量时,必须始终在声明时对变量进行初始化。变量说完之后,就不可能在代码的不同部分改变它的值了。

将变量声明为常量;

const int x = 1;

在 C++ 中使用带有指针的 const

有三种方法可以将 const 关键字与指针一起使用。

  • 指向 const 值的指针变量。
  • 指向一个值的 const 指针变量。
  • 指向 const 变量的 const 指针。

C++ 中指向 const 变量的指针变量

这意味着指针指向一个常量变量,我们可以使用指针指向的变量的值,但我们不能使用指针更改变量的值。

const int* y;

使字符串或数组不可变时很有用。

指向 C++ 中值的 const 指针变量

这里指针是一个常量,但指针的值不是常量;因此,可以更改其值。

此外,虽然我们改变了值,但我们不能改变指针的内存位置。当存储改变它的值而不是它的内存位置时,它是必不可少的。

int z = 2;
const int* y = &z;

C++ 中指向 const 变量的 const 指针变量

在这种情况下赋值后,就不可能改变指针变量或指针所指向的变量的值。

int i = 3 const int* const j = &i;

C++ 中的 const 成员函数和 const 对象

C++ 是一种面向对象的编程语言,在某些情况下,创建的对象并非旨在用于在程序的任何部分进行的任何更改。

因此,使用 const 关键字使对象成为常量对于这种情况非常有帮助。如果需要将对象声明为 const,则必须在声明时对其进行初始化。

初始化对象后,在程序的其余部分中无法更改赋予对象的任何尺寸。

编译器会抛出编译错误。这是一个 const 对象的示例。

#include <iostream>
using namespace std;

class length {
 public:
  int x;
  length(int y) { x = y; }
};

int main() {
  const length obj1(15);
  cout << "The length of object 1 is " << obj1.x << endl;
  return 0;
}

输出:

The length of object 1 is 15

当声明一个函数后跟 const 时,将创建一个常量函数。它主要用于 const 对象。

重要的是要注意,如果通过 const 对象调用成员函数,则无论成员函数是否打算更改对象,编译器都会抛出错误。

这是一个 const 成员函数的示例。

#include <iostream>
using namespace std;

class length {
 public:
  int x;
  length(int y) { x = y; }
  int getvalue() const { return x; }
};

int main() {
  const length obj1(15);
  cout << "The length of object 1 is " << obj1.getvalue() << endl;
  return 0;
}

输出:

The length of object 1 is 15

const 的要点是它不允许修改不应修改的内容。

Migel Hewage Nimesha avatar Migel Hewage Nimesha avatar

Nimesha is a Full-stack Software Engineer for more than five years, he loves technology, as technology has the power to solve our many problems within just a minute. He have been contributing to various projects over the last 5+ years and working with almost all the so-called 03 tiers(DB, M-Tier, and Client). Recently, he has started working with DevOps technologies such as Azure administration, Kubernetes, Terraform automation, and Bash scripting as well.

相关文章 - C++ Const