Difference between revisions of "Test"
| Line 1: | Line 1: | ||
| − | <source lang=" | + | === C++ === |
| − | // | + | <source lang="cpp"> |
| − | // | + | |
| − | + | template<class T> | |
| − | + | class Singleton | |
| − | + | { | |
| − | + | public: | |
| − | } | + | // Guaranteed to be destroyed. |
| + | // Instantiated on first use. | ||
| + | static T& GetInstance() { static T instance; return instance; } | ||
| + | private: | ||
| + | Singleton(); | ||
| + | ~Singleton(); | ||
| + | Singleton(const Singleton &) {}; // Don't Implement | ||
| + | Singleton& operator=(const Singleton<T>&) {}; // Don't Implement | ||
| + | Singleton* operator&() {}; | ||
| + | }; | ||
| + | class A : public Singleton<A> | ||
| + | { | ||
| + | friend class Singleton<A>; | ||
| + | private: | ||
| + | A(); // Should be private | ||
| + | ~virtual A(); | ||
| + | A(const A&); | ||
| + | A& operator=(const A&); | ||
| + | A* operator&(); | ||
| + | }; | ||
</source> | </source> | ||
Revision as of 10:14, 16 October 2014
C++
template<class T> class Singleton { public: // Guaranteed to be destroyed. // Instantiated on first use. static T& GetInstance() { static T instance; return instance; } private: Singleton(); ~Singleton(); Singleton(const Singleton &) {}; // Don't Implement Singleton& operator=(const Singleton<T>&) {}; // Don't Implement Singleton* operator&() {}; }; class A : public Singleton<A> { friend class Singleton<A>; private: A(); // Should be private ~virtual A(); A(const A&); A& operator=(const A&); A* operator&(); };
