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...
};

====================================

原文地址:https://www.cnblogs.com/szzshi/p/7685467.html