luoyayun361的专栏

GitHub地址:github.com/luoyayun361

C++设计模式--工厂方法模式

概述 上一篇介绍了简单工厂模式,该模式集中了所有产品的创建逻辑,缺点就是违反了高内聚责任分配原则,而工厂方法模式正是为了解决这这样的问题,可以说,工厂方法模式是对简单工厂模式的进一步抽象和推广,而此模式的核心思想是封装类中不变的部分,提取其中个性化善变的部分为独立类,通过依赖注入以达到解耦、复用...

2019-03-19 08:27:32

阅读数 13

评论数 0

C++设计模式--简单工厂模式

概述 工厂模式:封装对象的实现。它可能是所有设计模式中最有用的模式之一了。这里要说的是简单工厂模式,又称为静态方法工厂模式,属于创建性模式。其原理就是通过传入的参数来判断应该创建什么对象。 UML 类图 Factory :工厂类的核心,创建各种不同产品对象 IShape: 产品抽象基类,提供所...

2019-03-18 08:03:09

阅读数 11

评论数 0

C++之虚析构函数

定义 顾名思义,虚析构函数就是给析构函数声明为 virtual。 作用 虚析构函数可以正常的销毁多态模式下的派生类对象,防止造成一个诡异的“局部销毁”对象,从而防止形成内存泄漏。 使用场景 带有多态性质的基类应该声明一个 virtual 析构函数。如果 class 带有任何 virtual 函数...

2019-03-17 14:37:08

阅读数 12

评论数 0

C++设计模式--适配器模式

定义 适配器(Adapter)又叫包装器(Wrapper),是一种类对象结构性模式,目的是将一个类的接口转换成客户希望的另外一个接口。Adapter 模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。 分类 适配器有两种实现方式,分别是类适配器和对象适配器。这两种实现方式不太一样。 ...

2019-03-16 23:50:49

阅读数 10

评论数 0

C++之dynamic_cast、static_cast、const_cast、reinterpret_cast的用法和区别

简述 C++中有四个类型转换符,旨在严格限制允许的类型转换,使转换更规范。这四个转换符分别是: dynamic_cast static_cast const_cast reinterpret_cast 可以根据目的选择一个适合的运算符,而不是使用通用的类型转换。让编译器能够检查...

2019-03-16 12:42:05

阅读数 28

评论数 0

C++之 RTTI

什么是 RTTI RTTI(Runtime Type Indentification) 即运行阶段类型识别。 这是 C++新引进的特性之一。RTTI旨在为程序在运行阶段确定对象的类型提供一种标准方式。 RTTI 用途 考虑一种情况:假如现在有一个基类 Base,并且基类中包含有虚函数 Fun...

2019-03-12 20:56:17

阅读数 21

评论数 0

C++ warning:’xxx‘ has no out-of-line virtual method definitions...

前言 最近在复习一些 C++基础知识,写了一些 C++的代码,当我在类中定义了虚函数并且直接在类定义内部实现这些虚函数时,编译器就会报警告:’xxx‘ has no out-of-line virtual method definitions;its vtable will be emitted ...

2019-03-09 19:03:35

阅读数 37

评论数 0

C++设计模式--模板方法模式

模板方法模式(Template Method)是定义一个操作中的算法框架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法框架的结构即可重定义该算法的某些特定步骤。

2019-03-08 07:58:21

阅读数 11

评论数 0

C++设计模式--命令模式(Command)

概述 命令模式的结构很简单,但是对于消除代码间的耦合却有着重要的影响。命令模式就是一个函数对象:一个作为对象的函数。通过将函数封装为对象,就能够以参数的额形式将其传递给其他函数或者对象,告诉它们在旅行请求的过程中执行特定的操作。 命令模式 根据以上定义,来看一个简单的示例: /** ...

2019-03-05 07:44:56

阅读数 25

评论数 0

C++设计模式--状态模式(state)

概述 前面文章介绍了代理模式(在这里),代理模式和状态模式都提供一个代理类,从结构上看,可以认为代理模式只是状态模式的一个特例,不同之处在于,代理模式控制对其实现类的访问,而状态模式动态地改变其实现类,当发现大多数或者所有函数都存在条件代码时,这种模式很有用。 状态模式 简单来说,状态模式通过一个...

2019-03-02 09:48:10

阅读数 15

评论数 0

C++设计模式--单例模式(Singleton)及单例通用模板

概述 C++中的单例模式应该是最简单的了,并且非常常见,在编码中经常会用到。那么,简单的总结下 C++中的单例模式写法,以及根据单例模式扩展后的一些写法,最后还有单例的通用模板,可用于快捷创建一个单例类。 单例类 创建一个单例模式的关键是防止他人获得任何控制其对象生存期的权利,也就是说不要让别人可...

2019-03-02 08:53:29

阅读数 34

评论数 0

C++设计模式--代理模式(Proxy)

前言 C++相对其他编程语言来说算是比较难的了,相关知识点非常多,并且有些概念理解起来比较困难,对于初学者来说可能会感觉到非常痛苦。随着项目难度的升级,需要不断地优化框架从而使整个结构更具有扩展性,那么就要具备更多更深的 C++知识点才能搞定了,而设计模式是当今已经成为面向对象程序设计的几乎所有必...

2019-03-01 08:04:02

阅读数 30

评论数 0

C++之 ostream详细用法

概述 在 C++中,ostream表示输出流,英文”output stream“的简称。在 C++中常见的输出流对象就是标准输出流cout,很少自定义ostream的对象,更多的是直接使用cout。那么 ostream 有什么用呢,来看一个场景: class CPoint { public: ...

2019-03-01 07:24:15

阅读数 43

评论数 0

函数指针和指针函数用法和区别

前言 函数指针和指针函数,在学习 C 语言的时候遇到这两个东西简直头疼,当然还有更头疼的,比如什么函数指针函数、指针函数指针、数组指针、指针数组、函数指针数组等等,描述越长其定义就越复杂,当然理解起来就越难,特别是刚开始学习这门语言的童鞋,估计碰到这些东西就已经要崩溃了,然后好不容易死记硬背...

2018-05-24 08:11:10

阅读数 27025

评论数 8

C/C++ typedef用法详解

第一、四个用途 用途一: 定义一种类型的别名,而不只是简单的宏替换。可以用作同时声明指针型的多个对象。比如: char* pa, pb; // 这多数不符合我们的意图,它只声明了一个指向字符变量的指针, // 和一个字符变量; 以下则可行: typedef char* PCHAR...

2018-05-10 07:04:38

阅读数 27

评论数 0

C++的拷贝构造函数、operator=运算符重载,深拷贝和浅拷贝、explicit关键字

1、在C++编码过程中,类的创建十分频繁。 简单的功能,当然不用考虑太多,但是从进一步深刻理解C++的内涵,类的结构和用法,编写更好的代码的角度去考虑,我们就需要用到标题所提到的这些内容。 最近,在看单例模式,觉得十分有趣,然而如果想要掌握单例模式,就必须掌握这些内容。下面是我的一些学习总结,...

2018-05-09 08:01:23

阅读数 30

评论数 0

C++拷贝构造函数(深拷贝与浅拷贝)

对于普通类型的对象来说,它们之间的复制是很简单的,例如: int a=88; int b=a; 而类对象与普通对象不同,类对象内部结构一般较为复杂,存在各种成员变量。下面看一个类对象拷贝的简单例子。 #include <iostream> ...

2018-05-09 07:42:42

阅读数 32

评论数 0

提示
确定要删除当前文章?
取消 删除
关闭
关闭