c++特殊类的设计

本文详细探讨了C++中对象不能被拷贝、对象在堆栈和堆上的创建、类的继承限制、单例模式(包括饿汉和懒汉模式)等技术,展示了如何通过私有化构造函数和特性来控制对象行为。
摘要由CSDN通过智能技术生成

今天我们要来了解一些c++中的特殊类型。

1.对象不能被拷贝

我们实现的方法就是把拷贝函数和赋值运算进行私有化,或者用c++11的新特性在后面加上delete进行删除。

2.只能在堆上创建对象

实现方式就是将类的构造函数私有,拷贝构造声明成私有。防止别人调用拷贝在栈上生成对象。

我们就可以提供一个静态方法去创建对象,而不让外部自己去创建。

然后禁掉赋值运算就可以了。

3.只能在栈上创建对象。

同上将构造函数私有化,然后设计静态方法创建对象返回即可。

但是这种情况我们禁不掉————通过拷贝构造申请对象

但是如果我们直接禁止掉拷贝构造又会导致我们返回的时候出问题,属于伤敌一千,自损一万。

于是我们就可以尝试直接把new给他禁止掉。如下。

4.一个类不能被继承

1.构造函数私有,那子类继承调用不了父类的构造函数就不能继承了。

2.在c++11中推出了final,就可以对类进行结扎操作就可以了!

5.单例模式

一个类只能创建一个对象,即单例模式,该模式可以保证系统中该类只有一个实例,并提供一个
访问它的全局访问点,该实例被所有程序模块共享。

单例模式又分饿汉模式和饱汉模式

饿汉模式:就是说不管你将来用不用,程序启动时就创建一个唯一的实例对象。

我们首先封掉拷贝构造和=。

然后我们为了在一开始就加载,我们就必须在main函数之前创建,所以我们必须使用全局变量。

但是又因为我们不能在类外进行创建,所以我们可以直接在类里面创建一个类一直保留着就行。

要用的时候get就可以了。

优点:

再就是如果这个单例对象在多线程高并发环境下频繁使用,性能要求较高,那么显然使用饿汉模式来避免资源竞争,提高响应速度更好

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

懒汉相比于饿汉,第一次用的时候才创建,之后就直接获取即可。

其他的地方都一样,没有什么区别。

  • 6
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值