当前位置: 首页 > news >正文

加强网站和公众号建设如何获取所有网站

加强网站和公众号建设,如何获取所有网站,济南网站建设咨询小七,哪里有做家教网站的目录 一、设计一个禁止拷贝的类 二、设计一个只能在堆区上创建对象的类 三、设计一个只能在栈区和静态区上创建对象的类 四、设计一个不能继承的类 五、设计一个只能创建一个对象的类#xff08;单例模式#xff09; 一、设计一个禁止拷贝的类 拷贝只会发生在两个场景中…目录 一、设计一个禁止拷贝的类 二、设计一个只能在堆区上创建对象的类 三、设计一个只能在栈区和静态区上创建对象的类 四、设计一个不能继承的类 五、设计一个只能创建一个对象的类单例模式 一、设计一个禁止拷贝的类 拷贝只会发生在两个场景中分别是拷贝构造和赋值因此想要让一个类禁止拷贝只需要让该类对象不能调用拷贝构造函数以及赋值运算符重载即可。 C98/03 class CopyBan { public:CopyBan() { } private:CopyBan(const CopyBan cb);CopyBan operator(const CopyBan cb); }; ​ int main() {CopyBan cb1;// CopyBan cb2(cb1); // error// CopyBan cb3;// cb3 cb1; // errorreturn 0; } C11 class CopyBan { public:CopyBan() { }CopyBan(const CopyBan cb) delete;CopyBan operator(const CopyBan cb) delete; }; ​ int main() {CopyBan cb1;// CopyBan cb2(cb1); // error// CopyBan cb3;// cb3 cb1; // errorreturn 0; } 二、设计一个只能在堆区上创建对象的类 将类的构造函数设置为私有同时禁止拷贝构造函数的生成防止通过拷贝构造创建对象最后提供一个创建堆对象的静态成员函数。 #include iostream using namespace std;class HeapOnly { public:static HeapOnly* Create(){return new HeapOnly;} private:HeapOnly(){cout HeapOnly() endl;}HeapOnly(const HeapOnly ho) delete; };int main() {// HeapOnly ho; // error// static HeapOnly sho; // errorHeapOnly* pho HeapOnly::Create(); // HeapOnly()// HeapOnly copy(*pho); // errordelete pho;return 0; } 将类的析构函数设置为私有然后提供一个完成 delete 操作的静态成员函数。 #include iostream using namespace std;class HeapOnly { public:void Destroy(){delete this;} private:~HeapOnly(){cout ~HeapOnly() endl;} };int main() {// HeapOnly ho; // error// static HeapOnly sho; // errorHeapOnly* pho new HeapOnly;// HeapOnly copy(*pho); // errorpho-Destroy(); // ~HeapOnly()return 0; } 三、设计一个只能在栈区和静态区上创建对象的类 将类的构造函数设置为私有然后提供一个创建对象的静态成员函数。 #include iostream using namespace std; ​ class StackStaticOnly { public:static StackStaticOnly CreateObj(){return StackStaticOnly();} private:StackStaticOnly(){cout StackStaticOnly() endl;} }; ​ int main() {StackStaticOnly sso StackStaticOnly::CreateObj();  // StackStaticOnly()static StackStaticOnly ssso StackStaticOnly::CreateObj();  // StackStaticOnly()// StackStaticOnly* psso1 new StackStaticOnly; // error// 注意该方法无法防止以下的情况发生// StackStaticOnly* psso2 new StackStaticOnly(sso); // ok// 如果禁止拷贝构造函数的生成会导致 CreateObj 函数发生错误return 0; } 直接禁止 operator new 和 operator delete 的生成。 class StackStaticOnly {void* operator new(size_t size) delete;void operator delete(void* p) delete; }; ​ int main() {StackStaticOnly sso;static StackStaticOnly ssso;// StackStaticOnly* psso1 new StackStaticOnly; // error// StackStaticOnly* psso2 new StackStaticOnly(sso); // errorreturn 0; } 四、设计一个不能继承的类 C98/03 将基类的构造函数设置私有派生类就无法调用基类的构造函数因此无法继承。 class NonInherit { public:static NonInherit CreateObj(){return NonInherit();} private:NonInherit() { } }; C11 使用 final 关键字修饰类表示该类不能被继承。 class NonInherit final { }; 五、设计一个只能创建一个对象的类单例模式 设计模式Design Pattern是一种针对软件设计中经常出现的问题和解决方案的标准化描述。它们可以被视为是经验丰富的软件开发人员在解决类似问题时总结出来的设计思路、原则和指导。设计模式帮助我们以一种可重用的方式来解决特定的设计问题从而使代码更具灵活性、可维护性和可扩展性。 单例模式一个类只能创建一个对象。该模式可以保证系统中该类只有一个实例并提供一个访问它的全局访问点该实例被所有程序模块共享。比如在某个服务器程序中该服务器的配置信息存放在一个文件中这些配置数据由一个单例对象统一读取然后服务进程中的其他对象再通过这个单例对象获取这些配置信息这种方式简化了在复杂环境下的配置管理。 单例模式有以下两种实现模式 饿汉模式 在程序入口之前就完成了单例对象的初始化。 #include iostream using namespace std; ​ class Singleton { public:// 提供一个获取单例对象的静态成员函数static Singleton GetInstance(){return _ss;} private:// 将类的构造函数设置为私有Singleton() {cout Singleton() endl;} ​// 禁止拷贝构造函数的生成Singleton(const Singleton s) delete; ​static Singleton _ss;  // 注意静态成员变量属于类不属于某个具体的对象 }; ​ Singleton Singleton::_ss;  // Singleton() ​ int main() {cout Singleton::GetInstance() endl;cout Singleton::GetInstance() endl;// 输出的两个地址是相同的 ​// Singleton copy(Singleton::GetInstance()); // errorreturn 0; } 懒汉模式 如果单例对象构造十分耗时或者占用很多资源比如加载插件、初始化网络连接、读取文件等等而该对象在程序运行时又有可能不会用到那么使用饿汉模式在程序入口之前就完成单例对象的初始化会导致程序启动时变得非常缓慢所以在这种情况下使用懒汉模式延迟加载更好。 #include iostream using namespace std; ​ class Singleton { public:static Singleton GetInstance(){if (_pss nullptr){_pss new Singleton;}return *_pss;} ​// 一般情况下单例对象是不需要释放的// 特殊场景// 1、中途需要显示释放// 2、程序结束时需要做一些特殊动作比如持久化static void DelInstance(){if (_pss){delete _pss;_pss nullptr;}} private:Singleton(){cout Singleton() endl;} ​~Singleton(){cout ~Singleton() endl;} ​Singleton(const Singleton s) delete; ​static Singleton* _pss; }; ​ Singleton* Singleton::_pss nullptr; ​ int main() {cout Singleton::GetInstance() endl;cout Singleton::GetInstance() endl;// Singleton()// 输出的两个地址是相同的 ​// Singleton copy(Singleton::GetInstance()); // error ​Singleton::DelInstance();// ~Singleton()return 0; }
http://www.w-s-a.com/news/640297/

相关文章:

  • 自已建网站用jsp做的可运行的网站
  • 外贸建站代理网站建设设计公司哪家好
  • 普升高端品牌网站建设台州中兴建设咨询有限公司网站
  • 模板演示网站移动网站开发公司
  • 网站管理办法制度公司招聘信息
  • 宜昌市建设监理协会网站免备案免费域名
  • 河北省建设银行网站首页备案号怎么放到网站
  • 做电脑网站用什么软件有哪些wordpress版权修改
  • 加强部门网站建设工作wordpress文章页横幅
  • 中英网站怎么做wordpress本地音乐
  • 万网提供的网站建设服务的具体项目祥云平台网站建设
  • ftp网站怎么看后台的代码网站 制作软件
  • 网站开发软件教程网站tag 怎么实现
  • 中国建设监理协会化工监理协会网站彩票站自己做网站吗
  • 170个可带链接锚文本外链的网站论坛微信上如何创建小程序
  • 用js来做网站亳州建设局网站
  • 做网站的公司利润多少呢纺织厂网站模板
  • 网页设计构建的基本流程宜宾seo网站建设
  • 西安网站开发公司价格保定徐水网站建设
  • 学做川菜下什么网站软件著作权和专利的区别
  • 百度网站标题东莞外包公司有哪些
  • 织梦增加网站英文名称网页界面设计特点
  • 企业如何进行网站建设棋牌代理平台
  • 韩国做美食网站有哪些seo优化在线诊断
  • 网站建设规划模板做擦边网站
  • 做网站台式还是笔记本网上下载的免费网站模板怎么用
  • 高校网站群管理系统凡科建站是永久的吗
  • 深圳网站建设服务电话网站通栏设计素材
  • 网站里面的视频功能怎么做网站名注册
  • 网站游戏下载厦门php网站建设