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

上海简约网站建设公司寿光网站建设优化

上海简约网站建设公司,寿光网站建设优化,在百度工作但是是外包,wap网站前景1、特殊类的设计 如何设计出一个创建出的对象只能在堆上的类#xff1f;将类的默认构造函数设置为私有#xff0c;再将类的拷贝构造函数设置为delete#xff0c;设置静态函数GetObj#xff0c;内部调用new HeapOnly#xff0c;这样就只能在堆上开辟空间。 class HeapOnly…1、特殊类的设计 如何设计出一个创建出的对象只能在堆上的类将类的默认构造函数设置为私有再将类的拷贝构造函数设置为delete设置静态函数GetObj内部调用new HeapOnly这样就只能在堆上开辟空间。 class HeapOnly { public:static HeapOnly* GetObj(){return new HeapOnly;} private:HeapOnly(){} public:HeapOnly(const HeapOnly) delete; }; 下面照猫画虎设计一个只能在栈上创建对象的类。创建对象也是必须通过static成员函数来完成内部调用默认构造函数。 class StackOnly { public:static StackOnly GetObj(){return StackOnly();} private:StackOnly(){} }; 还有一种思路直接禁止了类的new函数这样不能在堆上开辟空间了但是这种做法是有缺陷的他不通过静态函数来构造对象无法阻止在数据段静态区创建对象比如static StackOnly p;就在静态区创建了一个对象不满足只能在栈创建对象的要求。 class StackOnly { public:void* operator new(size_t size) delete; }; 2、单例模式 设计模式是一套被人反复使用、多数人知晓的、经过分类的代码设计经验的总结。使用设计模式的目的是为了提高代码的可重用性让代码更容易被他人理解保证代码的可靠性。设计模式使得代码编写真正地工程化。 之前已经学过的一些设计模式有1迭代器模式基于面向对象三大特性之一的封装设计出来的用一个迭代器封装以后可以在不暴露容器的结构的情况下以一种统一的方式访问修改容器中的数据。2适配器模式体现的是一种复用的思想。 这里介绍一下单例模式。设计一个类在全局中进程中只能实例化出一个对象将这种设计模式称为单例模式。主要应用场景是多线程共享的内存池或者用于处理任务的线程池。 下面是一个简化的单例模式示例为了支持单例的基本属性要将构造函数设置为私有将拷贝构造函数设置为delete要通过静态成员函数GetInstance()来获取对象如果不设置为静态成员函数由于外部无法构造而普通成员函数需要依靠对象来调用因此无法获取对象。 class Singleton { public:static Singleton* GetInstance(){if (_pinst nullptr){_pinst new Singleton;}return _pinst;}Singleton(const Singleton s) delete; private:Singleton(){}static Singleton* _pinst; }; Singleton* Singleton::_pinst nullptr;上面这段代码依旧有缺陷就是他不能有效应对线程安全问题在上面这个类的单例还没有构造出来的时候这时候_pinst为nullptr假如有两个线程同时进入了GetInstance的if判断语句里面那么会构造出两个对象因此需要用互斥量保护线程安全。下面是一个双检查写法在解决线程安全问题的同时有效保证代码效率只有在_pinst为空时会加锁解锁。还可以使用智能指针来管理_mtx如果在加锁解锁之间出现异常可以避免死锁。 class Singleton { public:static Singleton* GetInstance(){if (_pinst nullptr){_mtx.lock();if (_pinst nullptr){_pinst new Singleton;}_mtx.unlock();}return _pinst;}Singleton(const Singleton s) delete; private:Singleton(){}static Singleton* _pinst;static mutex _mtx; };Singleton* Singleton::_pinst nullptr; mutex Singleton::_mtx;单例模式又分为懒汉模式和饿汉模式懒汉模式指的是在获取对象的时候再创建对象上面的写法就是典型的懒汉模式。饿汉模式指的是在一开始main函数之前就创建对象由于对象是在main函数之前创建的创建时只有主线程所以不存在线程安全问题下面是一种饿汉模式的写法。 class Singleton { public:static Singleton* GetInstance(){return _inst;} private:static Singleton _inst; }; Singleton Singleton::_inst;总结一下饿汉与懒汉的区别1懒汉模式需要考虑线程安全和资源释放的问题实现相对更复杂恶寒模式不存在以上问题实现简单。2懒汉是一种懒加载毛hi在需要时再初始化创建对象不会影响程序的启动。饿汉模式则相反在程序启动阶段就创建初始化实例对象会导致程序启动慢影响体验。3如果有多个单例类假设它们之间有依赖关系要求A单例先创建初始化B单例再创建初始化此处就不能使用饿汉因为无法保证创建对象的顺序静态对象是无法保证创建顺序的这里要用懒汉模式便于程序员手动控制。
http://www.w-s-a.com/news/741763/

相关文章:

  • 怎么上传自己做的网站杭州网站建设公司平台
  • 网站开发程序是什么知名的电子商务网站
  • 做pc端网站好么平台推广是什么意思
  • 农业信息网站建设意义淘宝官网首页网址
  • 重庆网站设计公司价格贵阳网站建设app开发
  • dw做网站怎么换图片编写网页所用的语言是
  • 外贸网站收录工具个人网站的备案
  • 正规的网站建设工作室海外高延迟服务器做网站
  • 网站设计确认函合肥做网站维护的公司
  • 小说网站推荐网站开发语言怎么查
  • 网页制作基础教程慕课版电子版那种登录才能查看的网站怎么做优化
  • 制作网站用的域名网站域名注册信息查询
  • 公司域名查询官方网站女教师遭网课入侵直播录屏曝
  • 网站开发社交网络功能的作用腾讯公司网站
  • 网站建设需要微信账号和密码网站建设工作汇报
  • 国家城乡住房和建设部网站西安私人网站
  • 天津高端网站定制seo实战教程
  • 网站文章怎么做才能被快速收录网站备案核验系统
  • 子网站建设方案l建设银行网站
  • 免费看舆情网站网站备案用户名忘了怎么办
  • 地方门户网站的分类网站的方案
  • 沧州哪里做网站网站的建设是什么
  • 设计公司海报秦皇岛seo网站推广
  • 网站导航规划wordpress做漫画
  • jsp体育用品网站建设wordpress 10万篇文章
  • 沈阳做微信和网站的公司网站在线支付接口
  • 重庆整合网络营销百度seo快速提升排名
  • 设计师网站外网百度分析工具
  • 旅游网站建设技术解决方案wordpress主题安装后找不到
  • 网站图片文字排版错误管理系统界面设计