CPP_7_Const类型转换

张一极

201999

Python的方法

在我们组合计算的过程中,很常见遇到一些数据类型不一致导致失败的原因,

这时候有一个很python的方法就是使用一个函数来转换。

C++提供了四个转换运算符:

Const_cast是用来做变量的const的设定,我们尝试:

#include<iostream>

#include<math.h>

using namespace std;

int main(){

    const int constant = 0;

    int modifier = constant; 

}

结果意料之中,这样的改变不会改变const限定的值,这两个对象是没有关系的,再次尝试:

#include<iostream>

#include<math.h>

using namespace std;

int main(){

    const int constant = 0;

    int* p = &constant;

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

}

  code g++ n.cpp -o n

n.cpp:6:10: error: cannot initialize a variable of type ‘int *’ with an rvalue

      of type ‘const int *’

    int* p = &constant;

         ^   ~~~~~~~~~

1 error generated.

错误说明的是,我们在使用指针变量的时候,要传给const_cast去取消限定的时候,我们应该用的是同样的const类型,也就是const int* p = &constant

#include<iostream>

#include<math.h>

using namespace std;

int main(){

    const int constant = 0;

    int* p = &constant;

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

}

这样即可顺利通过编译,附上int类型的各个注意点。

  • int* – pointer to int
  • int const * – pointer to const int
  • int * const – const pointer to int
  • int const * const – const pointer to const int

Now the first const can be on either side of the type so:

  • const int * == int const *
  • const int * const == int const * const

If you want to go really crazy you can do things like this:

  • int ** – pointer to pointer to int
  • int ** const – a const pointer to a pointer to an int
  • int * const * – a pointer to a const pointer to an int
  • int const ** – a pointer to a pointer to a const int
  • int * const * const – a const pointer to a const pointer to an int

更进一步的我们可以感受到变量指针的使用体验,对应的数据从地址中获得,我们只要保证地址相同即可表示这是同一个对象,或者变量,不同的地址,表示他们各自独立而不会相互影响。

此条目发表在ALL, CPP分类目录,贴了标签。将固定链接加入收藏夹。

发表评论

电子邮件地址不会被公开。 必填项已用*标注