Pointer
1. const pointer
pointer to const -> 指向的数据不能被修改
const pointer -> 指针的地址不能被修改
====================================================
int a = 3;
int b = 4;
// read from right to left
const int * p1 = &a; // a pointer to a const int
int * const p2 = &b; // a const pointer to an int
*p1 = b; // not OK
p1 = &b; // OK
a = 4; // OK: *p1 = 4
p2 = &a; // not OK
*p2 = a; // OK
===================================================
2. smart pointer
A smart pointer is an abstract data type that stimulates a pointer with additional funationality, such as auto memory deallocation, reference counting, etc. In practise it could be a wrapper around of a regular pointer and forwards all meaningfull operations to the pointer
The simplest smart pointer is autr_ptr which are defined in header file <memory>
======================================
template <class T> auto_ptr {
public:
explicit auto_ptr(T* p): auto_ptr(p){}
~auto_prt() {delete ptr;}
T& operator*(){return *ptr;}
T* operator->(){return &ptr;}
private:
T* ptr;
// other functionalities...
};
====================================