C++ 中的 const_cast - 类型转换运算符

鉴于任务是在 C++ 中展示 const_cast 的工作。

const_cast 是类型转换运算符之一。它用于更改任何对象的常量值,或者我们可以说它用于删除任何对象的常量性质。

const_cast 可用于具有某些常量值的任何对象的程序中,这些对象需要在某些时候偶尔更改。

语法

语法如下 -

const_cast<type name>(expression)

示例

Input:

const int x = 50;

const int* y = &x;

cout<<"old value is"<<*y<<"\n";

int* z=const_cast<int *>(y);

*z=100;

cout<<"new value is"<<*y;

Output: old value is 50

new value is 100

以下示例显示了 const_cast 的基本用法。这里我们声明了一个 int 类型的常量变量“x”,它被赋值为 50 和另一个指向变量“x”的 int 类型的常量指针“y”。

必须创建第三个指针才能使用 const_cast,这里我们创建了相同数据类型的指针“z”,即 int。

因此,当我们将指向常量变量“x”的常量指针“y”传递给 const_cast,并为指针 z 赋值时,我们就可以更改常量指针“y”的值。

这样我们就可以使用 const_cast 将常量值从 50 更改为 100。

如果我们尝试在不使用 const_cast 的情况下更改指针“y”所指向的“x”的值,则会显示以下错误-“分配只读位置”

示例

Input:

const int x = 50;

const int* y = &x;

cout<<"old value is"<<*y<<"\n";

int* z=const_cast<int *>(y);

*z=100;

cout<<"new value is"<<*y;

Output: old value is

以下程序中使用的方法如下-

  • 首先创建一个 int 类型的常量变量并给它一些合适的大小,假设“a”,它的值为 20。

  • 然后创建一个常量指针,让我们说相同数据类型的“b”,并为其分配我们的常量变量“a”的地址。

  • 然后创建第三个指针,让我们说要用于 const_cast 的数据类型为 int 的“c”。

  • 现在将我们的常量指针“b”传递给 const_cast 并保持它等于我们的指针“c”。

  • 最后改变我们的指针“c”的值。这将自动更改我们的常量指针“b”所指向的值。

算法

Start

Step 1 -> In function main()

Declare a constant int a=20

Declare a constant pointer int* b=&a

Declare a pointer int*c = const_cast<int *>(b)

Assign *c=40

Stop

示例

#include <iostream>

using namespace std;

int main() {

   const int a = 20;

   const int* b = &a;

   cout<<"old value is"<<*b<<"\n";

   int* c=const_cast<int *>(b);

   *c=40;

   cout<<"new value is"<<*b;

   return 0;

}

输出结果

如果我们运行上面的代码,它将生成以下输出 -

old value is 20

new value is 40

这里,常量指针“b”指向的常量变量“a”的值=20,这是不可更改的。但是通过创建相同数据类型的第三个非常量指针“c”并使用 const_cast 我们能够更改该常量值。

指针“c”的值的变化导致常量指针“b”所指向的常量值20的变化。因此,在使用 const_cast 之前,输出值为 20,在使用之后,输出值为 40。

const_cast 的其他用途

在任何程序中,const_cast 可用于将常量数据传递给另一个不接受常量数据的函数。

示例

#include <iostream>

using namespace std;

int change(int* p2) {

   return (*p2 * 10);

}

int main() {

   const int num = 100;

   const int *p = #

   int *p1 = const_cast <int *>(p);

   cout << change(p1);

   return 0;

}

输出结果

如果我们运行上面的代码,它将生成以下输出 -

1000

以下程序显示了我们如何使用 const_cast 将常量值 100 传递到change()不接收任何常量数据的函数中。

该change()函数接收该值并将其乘以 10,并将其返回给main()生成最终输出的函数,即 1000。

如果我们在没有 const_cast 的情况下运行相同的程序并尝试将常量值直接传递到change()函数中,则会显示错误。

以上是 C++ 中的 const_cast - 类型转换运算符 的全部内容, 来源链接: utcz.com/z/311479.html

回到顶部