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

云建站管理区百度竞价冷门产品

云建站管理区,百度竞价冷门产品,做一个网站需要多少时间,vps centos wordpress文章目录 1.设计一个类,不能被拷贝2.设计一个类,只能在堆上创建对象3.设计一个类,只能在栈上创建对象4.设计一个类,不能被继承5.设计一个类,只能创建一个对象5.1 单例模式5.2 饿汉模式5.3 懒汉模式5.4 两种模式的析构函…

在这里插入图片描述

文章目录

  • 1.设计一个类,不能被拷贝
  • 2.设计一个类,只能在堆上创建对象
  • 3.设计一个类,只能在栈上创建对象
  • 4.设计一个类,不能被继承
  • 5.设计一个类,只能创建一个对象
    • 5.1 单例模式
    • 5.2 饿汉模式
    • 5.3 懒汉模式
    • 5.4 两种模式的析构函数
    • 5.5 两种模式的优缺点

1.设计一个类,不能被拷贝

拷贝只会发生在两个场景中拷贝构造函数以及赋值运算符重载因此想要让一个类禁止拷贝,只需让该类不能调用拷贝构造函数以及赋值运算符重载即可。

C++98的方法:将拷贝构造函数与赋值运算符重载只声明不定义,并且将其访问权限设置为私有即可
在这里插入图片描述
原因:
1.设置成私有:如果只声明没有设置成private,用户自己如果在类外定义了,就可以不能禁止拷贝了。
2. 只声明不定义:不定义是因为该函数根本不会调用,定义了其实也没有什么意义,不写反而还简单,而且如果定义了就不会防止成员函数内部拷贝了

C++11的方法:C++11扩展delete的用法,delete除了释放new申请的资源外,如果在默认成员函数后跟上=delete,表示让编译器删除掉该默认成员函数
在这里插入图片描述

2.设计一个类,只能在堆上创建对象

我们正常创建一个对象,有三种:
在这里插入图片描述
在栈上,堆上,和静态区,现在我们只能在堆上创建。

实现方式:
1.将类的构造函数私有,拷贝构造声明成私有。防止别人调用拷贝在栈上生成对象。
2.提供一个成员函数,在该成员函数中完成堆对象的创建

在这里插入图片描述
但是现在存在一个问题:我们要创建一个对象,需要调用这个成员函数,而调用这个函数,又需要一个对象。这就出现了矛盾了。

解决方法:改成静态的成员函数
在这里插入图片描述
原因:其它函数需要用对象去调用,而构造函数不需要,所以可以new 构造函数。加上static后,函数就没有this指针,外面可以直接调用CreateObj了
在这里插入图片描述
但是,现在还存在一个问题:拷贝构造的时候,那个拷贝对象是在栈上
在这里插入图片描述
解决方法就是不让它进行拷贝构造:
在这里插入图片描述

3.设计一个类,只能在栈上创建对象

方法和上面的差不多,但需要改变一些:
在这里插入图片描述
因为这里是传值,所以是需要拷贝构造的,那么就不能把拷贝构造删除或者设置成私有。
在这里插入图片描述
但是,现在还存在的问题是:能用new调用拷贝构造申请对象
在这里插入图片描述
那么我们就 禁掉operator new可以把new 调用拷贝构造申请对象给禁掉。因为我们这里重载了operator new,那么它就不会去调用全局,而去调用我们自己的。

4.设计一个类,不能被继承

C++98方式:构造函数私有化,派生类中调不到基类的构造函数。则无法继承
在这里插入图片描述
C++11方式:final关键字,final修饰类,表示该类不能被继承
在这里插入图片描述

5.设计一个类,只能创建一个对象

设计模式是:一套被反复使用、多数人知晓的、经过分类的、代码设计经验的总结
使用设计模式的目的:为了代码可重用性、让代码更容易被他人理解、保证代码可靠性。 设计模式使代码编写真正工程化;设计模式是软件工程的基石脉络,如同大厦的结构一样。

5.1 单例模式

单例模式:一个类只能创建一个对象,该模式可以保证系统中该类只有一个实例,并提供一个访问它的全局访问点,该实例被所有程序模块共享
比如在某个服务器程序中,该服务器的配置信息存放在一个文件中,这些配置数据由一个单例对象统一读取,然后服务进程中的其它对象再通过这个单例对象获取这些配置信息,这种方式简化了在复杂环境下的配置管理。

单例模式有两种实现模式:饿汉模式和懒汉模式

5.2 饿汉模式

饿汉模式:就是说不管你将来用不用,程序启动时就创建一个唯一的实例对象
在这里插入图片描述
这里我们在类里面定义了一个静态的对象,这样行不行。

为什么这样是可以的呢
原因是:这个静态的对象,其实是不在这个类里的。它是所有对象的,它生命周期和全局的一样,只是会受到类域的限制。

那么为什么不设置全局的呢
原因是:全局不能访问私有的。

我们这里仅仅是声明,还没有定义,我们还需要在程序入口之前就完成单例对象的初始化
在这里插入图片描述
这样我们再把定义好的对象返回。

我们这里也可以定义指针:
在这里插入图片描述
不过我们还要把拷贝构造给删除:
在这里插入图片描述
那么我们想得到这个对象,只能调用这个函数:
在这里插入图片描述

5.3 懒汉模式

如果单例对象构造十分耗时或者占用很多资源,比如加载插件啊, 初始化网络连接啊,读取文件啊等等,而有可能该对象程序运行时不会用到,那么也要在程序一开始就进行初始化,就会导致程序启动时非常的缓慢。 所以这种情况使用懒汉模式(延迟加载)更好。

懒汉模式:一开始不创建对象,第一调用GetInstance再创建对象
在这里插入图片描述
懒汉模式只需要在定义的时候定义成空,当第一次调用时创建对象,其它时候直接把对象返回。

5.4 两种模式的析构函数

单例模式其实不需要写析构函数,因为单例模式基本是在整个程序都在使用,当进程结束时,会一起还给操作系统。

但是在某些特殊的情况下,需要析构:
析构时需要信息写到文件持久化
在这里插入图片描述
那么我们该怎么执行这个析构函数呢
在这里插入图片描述
这里的意思是:定义一个静态成员变量,程序结束时,系统会自动调用它的析构函数从而释放单例对象。这里设置内部类或者外部类都行。

5.5 两种模式的优缺点

我们举个例子来说明一下种模式的优缺点:
在这里插入图片描述
现在有两个单例对象:一个数据库对象,一个缓存对象。

如果要求先初始化数据库对象,再初始化缓存对象,我们该选择那个模式
饿汉模式控制不住,因为它是程序开始前就初始化,所以初始化顺序不确定,就可能会报错。

懒汉模式可以控制,因为当第一次为空的时候才会创建。

饿汉模式,缺点:可能会导致进程启动慢,且如果有多个单例类对象实例启动顺序不确定。优点:简单

懒汉模式,缺点:复杂。优点:第一次使用实例对象时,创建对象。进程启动无负载。多个单例实例启动顺序自由控制

http://www.hkea.cn/news/935438/

相关文章:

  • 网站开发毕设文献郑州网站优化顾问
  • 青海建设银行的官方网站自己制作网页的网站
  • 网站建设的图片叠加步骤过程2021年搜索引擎排名
  • 网站链接到邮箱怎么做搜索引擎推广试题
  • 十堰城市建设网站制作自己的网站
  • 传媒网站建设公司深圳百度seo优化
  • 公司需要网站 该怎么做公司推广咨询
  • 高中男女做那个视频网站seo做的好的网站
  • 网站建设 摄影服务上海seo网站排名优化公司
  • 网页设计中html代码seo博客网站
  • 怎样建设小游戏网站google关键词搜索技巧
  • 淘宝 客要推广网站怎么做全媒体广告代理
  • 那个b2b网站可以做外贸武汉全网推广
  • 深圳css3网站开发多少钱如何策划一个营销方案
  • 织梦统计网站访问量代码网络营销公司如何建立
  • 外贸营销型网站建设今日最新重大新闻
  • 个性化定制网站长春网络推广优化
  • 合肥庐阳区疫情最新消息seo优化首页
  • h5网站制作接单最新中高风险地区名单
  • 北京市住房城乡建设委网站公司怎么在网上推广
  • 网站建设首页怎样插入视频百度指数在线查询小程序
  • 青州网站制作哪家好aso优化哪家好
  • wordpress做网站优点郑州网站seo优化
  • 宝安做棋牌网站建设找哪家公司好湖南长沙疫情最新消息
  • 四川专业网站建设中国十大企业培训机构排名
  • 怎么切页面做网站灰色词首页排名接单
  • 网站右侧浮动广告代码百度推广代理公司广州
  • 固原建站公司旺道seo推广系统怎么收费
  • 适合做外链的网站海外广告联盟平台推广
  • 建筑模板规格型号郑州厉害的seo顾问