gpt4 book ai didi

c++ - 引用和指针的 const_cast

转载 作者:行者123 更新时间:2023-11-30 03:26:02 25 4
gpt4 key购买 nike

我看到这个 post这解释了const_cast<>并说使用指针/引用是有益的。但是,请考虑以下代码:

1-

const_cast<SCOTCH_Num*>(xadj)

我得到 invalid const_cast from type 'cost label* {aka const long int *}' to type 'SCOTCH_Num* {aka int*}' .所以,指针被类型转换了。不是吗?

2-

(SCOTCH_Num*)(xadj)

我得到 warning: use of old-style cast [-Wold-style-cast]

您可能会询问变量定义,但是 aka错误的一部分很清楚。如果我提出了更多细节,请告诉我。

最佳答案

const_cast 仅用于修改指针上的 const 或 volatile 限定符指向相同类型。您不能使用它在不相关的指针类型之间进行转换。 long int * 是指向不同于 int* 的对象类型的指针,因此 const_cast 将是格式错误的。这很好,因为在做这种有风险的事情时,您不应该措手不及。

c-style cast 将不惜一切代价进行转换。这是一个几乎不考虑类型系统的钝器工具。 C++ 为不同场景引入不同类型转换的全部原因是为了避免这种“不惜一切代价进行转换”的行为。这是为了在转换时为程序员提供控制和精确度。

关于c++ - 引用和指针的 const_cast,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48623859/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com