![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C++
C++
799 ovo
up!
展开
-
【C++设计模式】单例模式简单实现以及改进方法
什么是单例模式 许多时候整个系统只需要拥有一个的全局对象,这样有利于我们协调系统整体的行为。它的类图如下: 适用场景: 1.需要生成唯一序列的环境 2.需要频繁实例化然后销毁的对象。 3.创建对象时耗时过多或者耗资源过多,但又经常用到的对象。 4.方便资源相互通信的环境 饿汉式 单例类被加载时,就会实例化一个对象并交给自己的引用,供系统使用;而且,由于这个类在整个生命周期中只会被加载一次,因此只会创建一个实例,即能够充分保证单例。 #include<iostream> using namesp原创 2021-04-27 21:41:11 · 437 阅读 · 0 评论 -
【C++设计模式】工厂模式及实现
一、简单工厂模式 1.概念:简单工厂模式是属于创建型模式,又叫做静态工厂方法(static Factory Method)模式,简单工厂模式是由一个工厂对象决定创建出来哪一种产品类的实例。实质是由一个工厂类根据传入的参数,动态决定应该创建哪一类产品类(这些产品类继承自一个父类或接口)的实例。 2.使用场景: (1)在程序中,需要创建的对象很多,导致对象的new操作多且杂时,需要使用简单工厂模式; (2)由于对象的创建过程是我们不需要去关心的,而我们注重的是对象的实际操作, 所以,我们需要分离对象的创建和操作原创 2021-04-28 13:31:14 · 328 阅读 · 0 评论 -
【C++11】浅谈右值引用
右值引用 什么是左值和右值:左值实指表达式结束后依然存在的持久对象,右值是指表达式结束后就不存在的临时对象。 区分左值和右值的便捷方法:看能不能对表达式取地址,如果能,为左值,如果不能,则为右值。所有的具名变量或对象都是左值,而右值不具名。 在C++11中右值由两个概念构成: 1.一个是纯右值,比如,非引用返回的临时变量,运算表达式产生的临时变量,原始字面量和la’mbda表达式等都是纯右值。 2.另一个则是将亡值,而将亡值是C++11新增的与右值引用相关的表达式,比如将要被移动的对象、T&&原创 2021-03-29 22:01:56 · 471 阅读 · 0 评论 -
RAII
一、什么是RAII RAII(Resource Acquisition Is Initialization)是由c++之父Bjarne Stroustrup提出的,中文翻译为 资源获取即初始化,使用局部对象来管理资源的技术称为资源获取即初始化。这里的资源主要是指操作系统中有限的东西,如内存,网络套接字,互斥量,文件句柄等,局部对象实指存储在栈的对象,它的生命周期是由操作系统来管理的,无需人工介入。 1、RAII的原理 资源的使用一般分为一下三个步骤: 1.获取资源(创建对象) 2.使用资源 3.销毁资源(析原创 2021-03-29 15:13:05 · 86 阅读 · 0 评论 -
【C++】C++中new/delete与malloc/free的区别
new/delete与malloc/free的区别 在C++中有malloc和free,为什么还需要new和delete呢? malloc和free是C/C++语言的标准库函数,new和delete是C++的运算符。他们都用于申请动态内存和释放内存。 但是对于非内部数据类型的对象而言,只用maloc/free无法满足动态对象的要求。对象在创建的同时要自动执行构造函数,对象在消亡之前要自动执行析构函数。由于malloc/free是库函数而不是运算符,不在编译器控制权限之内,不能够把执行构造函数和析构函数的任务原创 2021-03-29 13:59:10 · 84 阅读 · 0 评论 -
C语言中sizeof和strlen的区别
sizeof和strlen的区别 最近复习了c语言,在字符串,数组中经常用到的sizeof和strlen有什么区别呢?可能在实际运用中会混在一起,所以这篇文章把它们的用法总结的清清楚楚。 举下面几个例子 第一个例子: char *s="0123456789"; sizeof(s)的结果位4,s是指向字符串常量的字符指针 sizeof(*s)的结果位1,*s是第一个字符 第二个例子: int s[100]="0123456789"; sizeof(s)的结果为400,s表示在内存中的大小,100*4=40原创 2021-03-04 21:26:44 · 304 阅读 · 1 评论