C++ 中的 const 关键字
-
在 C++ 中声明
Const
变量 -
在 C++ 中使用带有指针的
const
-
C++ 中指向
const
变量的指针变量 -
指向 C++ 中值的
const
指针变量 -
C++ 中指向
const
变量的const
指针变量 -
C++ 中的
const
成员函数和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
的要点是它不允许修改不应修改的内容。
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.