const T*const是什么意思
What does `const T* const` mean?
我正在阅读一个C++模板示例,模板签名的一部分让我感到困惑
我读对了吗:
const T* const foo;
foo
是const*
还是const T
?
T
的常量指针。也就是说,你既不能修改指针,也不能修改它指向的东西。
const T*
只会禁止您修改指针指向的任何内容,但它允许您(在语言的范围内(检查*(foo+1)
和*(foo-1)
处的值。当您将指针传递到不可变数组(例如您只应该读取的C字符串(时,请使用此表单。
T * const
意味着您可以修改foo
指向的T
值,但不能修改指针本身;所以不能说foo++; (*foo)++
,因为第一个语句会增加(修改(指针。
T *
将为您提供完全的自由:您可以获得一个指向数组的指针,并且可以检查和修改该数组的任何成员。
是;这正是它的意思。
由于在使用指针时,const
总是有一点混乱,因此存在以下可能性:
const T * aConstant
意味着CCD_ 15是指向CCD_ 16的变量指针。
T const * aConstant
做的完全一样。
T * const aConstant
声明CCD_ 19是指向CCD_。
T const * const aConstant
(或const T * const aConstant
(声明一个指向
constant T
的常量指针。
这是一个指向常量T的常量指针。因此,如果T是一个int,那么数组是指向一个以两种方式为常量的int的指针:
指向const的指针:指针指向的值不能更改(或指向const int(const指针:指针中存储的内存地址无法更改
这也与T const * const array
相同
请参阅有关常量正确性的wiki。
是的,foo是指向常量T的常量指针。
是。
const T*
使得阵列的元素CCD_ 25。。。至少就foo
而言。
foo[0] = T(); // Illegal!
foo[1] = T(); // Illegal!
foo[2] = whatever; // Illegal!
const
使CCD_ 27成为恒定指针。因此,这是非法的:
foo = &some_array;
可变
foo
如果你不知道这是什么,你应该认真考虑去幼儿园。
是的,我认为var(const(的名称会让你感到困惑。
是的,这只是简单地意味着不仅不能更改foo
指向的内容,而且不能更改foo
本身的值,使其指向其他T
实例。
只需像这样解析
const<ptr<const<T>>> foo
虽然它是违法的,但我认为每个人都能抓住它的本质。
- "char const * name() const _WEBSOCKETPP_NOEXCEPT_TOKEN_ {"剂量是什么意思
- 语法问题:"char [5] const &"是什么意思?
- 这个(const vector<vector<int> > &A)"代码段是什么意思?
- classname functionname(const classname & objectname)是什么意思?
- "const char(&a)[N]"是什么意思?
- "inline operator T*() const"是什么意思?
- const 在具有尾随返回类型的自动退货声明中是什么意思
- :void setData(const Color * & data_ptr)中的 *& 是什么意思;
- 成员函数限定符(const除外)是什么意思
- const K& k = K() 在这个构造函数中是什么意思?
- T const & 在函数的返回类型中是什么意思?
- 过载"operator X*() const"是什么意思?
- const 在不同地方的 C++ 中是什么意思
- const T& value() const 是什么意思?
- 这C++代码是什么意思?'const ResTable&res = am->getResources();'
- 这是什么意思?:注意:参数 1 没有从"int"到"const 帐户"的已知转换
- 函数头后面的const是什么意思
- 当 const 放在函数的声明之后是什么意思?
- const T*const是什么意思
- "const name{something}"是什么意思?