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

网站开发jsp昆明建设咨询监理有限公司网站

网站开发jsp,昆明建设咨询监理有限公司网站,十大搞笑素材网站,企业app定制#x1f30f;博客主页#xff1a; 主页 #x1f516;系列专栏#xff1a; C ❤️感谢大家点赞#x1f44d;收藏⭐评论✍️ #x1f60d;期待与大家一起进步#xff01; 文章目录 一、请设计一个类#xff0c;只能在堆上创建对象二、 请设计一个类#xff0c;只能… 博客主页 主页 系列专栏 C ❤️感谢大家点赞收藏⭐评论✍️ 期待与大家一起进步 文章目录 一、请设计一个类只能在堆上创建对象二、 请设计一个类只能在栈上创建对象三、 请设计一个类不能被继承1.方法一2.方法二 四、请设计一个类只能创建一个对象(单例模式)1.饿汉模式2.懒汉模式1.普通场景2.特殊场景1、中途需要显示释放2.程序结束时需要做一些特殊动作如持久化3.源码 一、请设计一个类只能在堆上创建对象 实现方式 将类的构造函数私有拷贝构造声明成私有。防止别人调用拷贝在栈上生成对象。提供一个静态的成员函数在该静态成员函数中完成堆对象的创建 class HeapOnly { public:static HeapOnly* CreateObj(){return new HeapOnly;} private:HeapOnly(){//...}HeapOnly(const HeapOnly hp) delete;HeapOnly operator(const HeapOnly hp) delete; };二、 请设计一个类只能在栈上创建对象 实现方法 1.同上将构造函数私有化然后设计静态方法创建对象返回即可 2.禁用堆上的创建方式newoperator new构造函数 3.operator new 是系统提供的全局函数new在底层调用operator new全局函数来申请空间 class StackOnly { public:static StackOnly CreateObj(){return StackOnly();}// 禁掉operator new可以把下面用new 调用拷贝构造申请对象给禁掉// StackOnly obj StackOnly::CreateObj();// StackOnly* ptr3 new StackOnly(obj);// newoperator new 构造//delete析构operator deletevoid* operator new(size_t size) delete;void operator delete(void* p) delete; private://构造函数私有化//拷贝构造函数不能私有化因为我们上面CreateObj()返回需要//用到拷贝构造函数StackOnly():_a(0){} private:int _a; };三、 请设计一个类不能被继承 1.方法一 // 构造函数私有化派生类中调不到基类的构造函数。则无法继承 class NonInherit { public:static NonInherit GetInstance(){return NonInherit();} private:NonInherit(){} };2.方法二 //final关键字final修饰类表示该类不能被继承。 class A final {// .... };四、请设计一个类只能创建一个对象(单例模式) 单例模式 一个类只能创建一个对象即单例模式该模式可以保证系统中该类只有一个实例并提供一个访问它的全局访问点该实例被所有程序模块共享。 比如在某个服务器程序中该服务器的配置信息存放在一个文件中这些配置数据由一个单例对象统一读取然后服务进程中的其他对象再通过这个单例对象获取这些配置信息这种方式简化了在复杂环境下的配置管理 1.饿汉模式 就是说不管你将来用不用程序启动时就创建一个唯一的实例对象。 class Singleton { public:// 2、提供获取单例对象的接口函数static Singleton GetInstance(){return _sinst;}private:// 1、构造函数私有//构造函数私有也不能调用new了Singleton(){// ...}// 3、防拷贝Singleton(const Singleton s) delete;Singleton operator(const Singleton s) delete;static Singleton _sinst;//虽然为静态类型但依然可以使用对应类里面的构造函数 }; Singleton Singleton::_sinst;// 在程序入口之前就完成单例对象的初始化饿汉模式:一开始(main函数之前)就创建单例对象 1、如果单例对象初始化内容很多影响启动速度 2、如果两个单例类互相有依赖关系。 假设有A B两个单例类要求A先创建B再创建B的初始化创建依赖A但在main的外面没办法确定哪个类先被创建可能会出现问题 2.懒汉模式 如果单例对象构造十分耗时或者占用很多资源比如加载插件啊 初始化网络连接啊读取文件啊等等而有可能该对象程序运行时不会用到那么也要在程序一开始就进行初始化就会导致程序启动时非常的缓慢。 所以这种情况使用懒汉模式延迟加载更好。 1.普通场景 class Singleton{public:// 2、提供获取单例对象的接口函数static Singleton GetInstance(){if (_psinst nullptr){// 第一次调用GetInstance的时候创建单例对象_psinst new Singleton;}return *_psinst;}private:// 1、构造函数私有Singleton(){// ...}~Singleton(){}// 3、防拷贝Singleton(const Singleton s) delete;Singleton operator(const Singleton s) delete;static Singleton* _psinst;};Singleton* Singleton::_psinst nullptr;2.特殊场景 1、中途需要显示释放 static void DelInstance(){if (_psinst){delete _psinst;_psinst nullptr;}//自己写一个静态的函数进行释放操作}2.程序结束时需要做一些特殊动作如持久化 方法 1.我们把要写入的数据过程放到析构函数中 2.我们可以像智能指针那样使用在类里面再定义一个类GC让GC的析构函数专门用来管理Singleton的析构函数然后创建GC的对象因为GC不是指针类型为普通类型程序结束的时候会自动调用其析构函数这样也就完成了Singleton的析构函数 class GC{public:~GC(){Singleton::DelInstance();}};~Singleton(){cout ~Singleton() endl;// map数据写到文件中FILE* fin fopen(map.txt, w);for (auto e : _dict){fputs(e.first.c_str(), fin);fputs(:, fin);fputs(e.second.c_str(), fin);fputs(\n, fin);}}3.源码 class Singleton{public:// 2、提供获取单例对象的接口函数static Singleton GetInstance(){if (_psinst nullptr){// 第一次调用GetInstance的时候创建单例对象_psinst new Singleton;}return *_psinst;}// 一般单例不用释放。// 特殊场景1、中途需要显示释放 2、程序结束时需要做一些特殊动作如持久化static void DelInstance(){if (_psinst){delete _psinst;_psinst nullptr;}}class GC{public:~GC(){Singleton::DelInstance();}};private:// 1、构造函数私有Singleton(){// ...}~Singleton(){cout ~Singleton() endl;// map数据写到文件中FILE* fin fopen(map.txt, w);for (auto e : _dict){fputs(e.first.c_str(), fin);fputs(:, fin);fputs(e.second.c_str(), fin);fputs(\n, fin);}}// 3、防拷贝Singleton(const Singleton s) delete;Singleton operator(const Singleton s) delete;mapstring, string _dict;// ...static Singleton* _psinst;static GC _gc;};Singleton* Singleton::_psinst nullptr;Singleton::GC Singleton::_gc;class A {public:A() {cout gouzao endl;}~A() {cout 析构函数 endl;}};
http://www.zqtcl.cn/news/982660/

相关文章:

  • 浙江门户网站建设公司个体工商户查询
  • 做网站的注意点赛事竞猜网站开发
  • 现在流行用什么语言做网站ppt设计教程网
  • 高端网站哪种好培训机构不退钱最怕什么举报
  • 青岛个人建站模板wordpress没有链接
  • 网上学习网站有哪些厦门城乡建设局网站
  • 怎样创建网站快捷方式个人制作一个网站的费用
  • 恒信在线做彩票的是什么样的网站软件开发流程管理
  • 网站服务器地址在哪里看艺术学校网站模板
  • 郑州中心站网站建设价格标准新闻
  • 电子商务网站管理互联网营销师主要做什么
  • 门户网站指的是什么凯里网络公司建设网站
  • 网站接入服务商查询0建设营销型网站步骤
  • 长沙如何做百度的网站小型网站建设实训教程
  • 昆明网络公司网站网站建设经费请示
  • 手机端网站欣赏wordpress 文章rss
  • 做网站一定要实名认证吗国外免费空间网站申请
  • 阿里云网站空间主机长春网站建设设计
  • 龙华网站建设yihekj长沙招聘网站制作
  • 网站怎么做文本跳出来网络规划设计师有用吗
  • 室内设计网站官网大全中国那些企业做网站做得好
  • 状态管理名词解释网站开发网络营销推广方案案例
  • 做网站需要几大模板河南中国建设信息网
  • 成都温江网站建设空间网页版
  • 做美股的数据网站邢台网站建设公司哪家好一点
  • 青岛即墨网站开发查询建设用地规划许可证在哪个网站
  • 成都APP,微网站开发芜湖企业100强
  • 江门搜索引擎网站推广网约车多少钱一辆
  • 北京高端网站建设宣传请人做软件开发的网站
  • h网站建设长沙本地公众号