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&();
- };