首页 > 代码库 > 真实的C++单例模式举例
真实的C++单例模式举例
把构造函数声明为protected的理由很简单,但把构造函数声明为private的原因却很少知道.
1.屏蔽构造函数,就是不让你创建这个类的对象,就是不想让你在外面的其他函数中直接new这个类,而只能从此类内部进行构造(如下面的代码)。
2.阻止其他函数中执行此类的拷贝构造函数或赋值操作符,避免编译器自动生成默认的拷贝构造函数,不想按照默认的拷贝构造函数进行逐字段拷贝或赋值操作符,这时可以把拷贝构造函数或赋值操作符声明成private的
1 class IOCP 2 { 3 private: 4 IOCP() 5 { 6 //创建完成端口(备注:OS维护的一个队列,OS把i/o操作已经完成的事件通知放到这里)的句柄 7 if ((m_hIOCP = CreateIoCompletionPort(INVALID_HANDLE_VALUE, NULL, NULL, 0)) == NULL) 8 ; 9 //创建工作线程,用来处理完成端口消息的 10 m_hWorkerThread = CreateThread(NULL, 0, WorkThread, (LPVOID)this, 0, &m_workerThreadID); 11 };12 ~IOCP();13 private:14 static IOCP* m_instance;15 public:16 static IOCP* Instance()17 {18 if( m_instance == NULL )19 {20 m_instance = new IOCP();21 }22 return m_instance;23 }24 void Wait();25 static DWORD __stdcall WorkThread(LPVOID Param); 26 HANDLE m_hIOCP; //完成端口的句柄 27 private: 28 HANDLE m_hWorkerThread; //工作线程句柄 29 DWORD m_workerThreadID; 30 public:31 //将套接字绑定到完成端口32 bool RegisterToCompletionPort( SOCKET socket , void* completionKey);33 };
真实的C++单例模式举例
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。