📄 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 + -