?? trule.hpp
字號:
/* The following code example is taken from the book * "C++ Templates - The Complete Guide" * by David Vandevoorde and Nicolai M. Josuttis, Addison-Wesley, 2002 * * (C) Copyright David Vandevoorde and Nicolai M. Josuttis 2002. * Permission to copy, use, modify, sell and distribute this software * is granted provided this copyright notice appears in all copies. * This software is provided "as is" without express or implied * warranty, and with no claim as to its suitability for any purpose. */#ifndef TRULE_HPP#define TRULE_HPPtemplate <typename T>class Holder;template <typename T>class Trule { private: T* ptr; // objects to which the trule refers (if any) public: // constructor to ensure that a trule is used only as a return type // to transfer holders from callee to caller! Trule (Holder<T>& h) { ptr = h.get(); h.release(); } // copy constructor Trule (Trule<T> const& t) { ptr = t.ptr; const_cast<Trule<T>&>(t).ptr = 0; } // destructor ~Trule() { delete ptr; } private: Trule(Trule<T>&); // discourage use of lvalue trules Trule<T>& operator= (Trule<T>&); // discourage copy assignment friend class Holder<T>;};#endif // TRULE_HPP
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -