C++ point-like class
point-like class就是行为像指针的类。point-like class的成员中一定有一个真正的指针,class通过重载 *
和->
等指针的操作来实现pointer-like。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
| template<typename T> class shared_ptr { public: shared_ptr(T* p): ptr(p) { ... } T& operator *() { return *ptr; } T* operator ->() { return ptr; } private: T* ptr; };
class object { public: ... void some_method(){...} }; object temp; shared_ptr<object> pointer(&temp);
pointer->some_method();
|
pointer-like class的例子:STL的迭代器,C++11的智能指针。
function-like class
function-like class 就是类能像函数一样通过括号传入参数执行,重点就在重载括号。也被称为仿函数。
1 2 3 4 5
| template <class T> class Identify { public: const T& operator() (const T& x ){return x;} };
|
参考
侯捷 c++程序设计