|
|
(18 intermediate revisions by 2 users not shown) |
Line 1: |
Line 1: |
− | === C++ ===
| + | #REDIRECT [[Main Page]] |
− | <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>
| + | |