const vs non-const
2012-04-12 11:53
120 查看
It is OK to pass a non-const variable to a function with const parameter; it is incorrect to pass a const variable to a function with non-const parameter.
non-const function can invoke const function; const function can't invoke non-const function.
A* const a // const pointer, non-const object; a can't point to other objects, but the object that it points can be changed.
A aa;
*a = aa; // ok because *a is non-const object.
a can call non-const function in class A.
a = &aa // error, because a is a const pointer.
const A* a // non-const pointer, const object; a can point to other objects, but the object that it points can't be changed.
A aa;
*a = aa; // error, because *a is a const object.
a can't call non-const function in class A.
a = &aa // ok, because a is a non-const pointer.
STL iterators are similar to pointer.
xxx::iterator is equal to T*
const xxx::iterator is equal to T* const
xxx::const_iterator is equal to const T*
non-const function can invoke const function; const function can't invoke non-const function.
A* const a // const pointer, non-const object; a can't point to other objects, but the object that it points can be changed.
A aa;
*a = aa; // ok because *a is non-const object.
a can call non-const function in class A.
a = &aa // error, because a is a const pointer.
const A* a // non-const pointer, const object; a can point to other objects, but the object that it points can't be changed.
A aa;
*a = aa; // error, because *a is a const object.
a can't call non-const function in class A.
a = &aa // ok, because a is a non-const pointer.
STL iterators are similar to pointer.
xxx::iterator is equal to T*
const xxx::iterator is equal to T* const
xxx::const_iterator is equal to const T*
相关文章推荐
- const vs non-const
- C++ Special:const关键字和常量指针 vs 指针常量
- C++引用报错:invalid initialization of non-const reference of type ‘std::string&’ from an rvalue of type
- const VS readonly in detail
- Blocking vs. Non-Blocking Sockets
- Javascript Array Methods: Mutating vs. Non-Mutating
- const T vs. T const ——Dan Saks 【翻译】
- C++ Special:const关键字和常量指针 vs 指针常量
- 对决:enum VS const
- C# const VS readonly
- nodejs中的阻塞和非阻塞(https://nodejs.org/en/docs/guides/blocking-vs-non-blocking/)
- invalid initialization of non-const reference of type ‘int*&’ from a temporary of type ‘int*’
- vs2013 出现Building an MFC project for a non-Unicode character set is deprecated
- invalid initialization of non-const reference of type与discards qualifiers
- const char* VS char* const
- const T vs. T const ——Dan Saks 【翻译】
- C++ Special:const关键字和常量指针 vs 指针常量
- .NET Tips : const vs readonly
- 编译错误:error: invalid initialization of non-const reference of type ‘*&’ from a temporary of type
- const T 与T const的比较(const T vs.T const的翻译 Dan Saks)