【发布时间】:2013-07-25 15:38:47
【问题描述】:
为什么 const 指针会自动转换为 non-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*
【问题讨论】:
-
如果你把
const放在它修改的后面,问题应该很明显了。T const是什么,如果T是int*? -
当然,返回值上的任何顶级
const或volatile都会被忽略,除非返回的类型是类类型。
标签: c++ pointers casting constants