• 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*
posted on 2012-04-12 11:53  chuwachen  阅读(186)  评论(0编辑  收藏  举报