gpt4 book ai didi

c++ - 指向 const 对象的指针自动转换为指向对象的指针

转载 作者:行者123 更新时间:2023-11-28 00:42:57 24 4
gpt4 key购买 nike

为什么 const 指针会自动转换为非常量指针?在这个简单的代码中?不应该在这里警告编译器吗?还是抛出错误?

template<typename T>
const T makeConst(T a){
return a;
}

int * j = new int(9);
int * z = makeConst(j); // cast from int* const ==> int*

最佳答案

这是因为 int*constconst int*不同. int* const意味着您不能更改指针指向的内容,但可以更改值。这就是编译器解析 <typename T> 的方式从一个指针。为了解决这个问题,我们通常使用这样的模板:

template<typename T>
const T* makeConst(T* a){
return a;
}

int * j = new int(9);
int * z = makeConst(j); // error C2440 in Visual Studio`

关于c++ - 指向 const 对象的指针自动转换为指向对象的指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17862604/

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