C++17中新增了static_assert,即静态断言,在编译期就能帮助程序员识别到代码中的一些断言错误, 并且可以在static_assert中加入第二个参数,将字符串直接作为编译结果输出

阅读全文 »

在C++17中, 对于模版类对象的生成不需要声明模版参数,可以直接进行初始化,模版参数交由编译器去推断

阅读全文 »

空类

空类(empty class)是指没有数据成员和成员函数的类。

空类对象的大小为 1 字节,因为编译器会为空类对象分配一个字节的空间,以防止出现意外的内存访问。这样当用户创建两个空类的对象时,就可以保证这两个对象所在的地址不同。

1
2
3
4
5
6
7
8
9
10
#include <iostream>

using namespace std;

X {};

int main() {
cout << sizeof(X) << endl;
return 0;
}

输出:

1
1

抽象工厂模式

工厂模式中提到,为了解决简单工厂模式的不足(不满足开闭原则),工厂模式将工厂类抽象为一个公共类,只定义了基本的接口,而将对象的创建工作推迟到其子类中,这样当我们新增一个产品类的时候,只需要创建一个该产品类对应的工厂,并且继承公共的工厂类即可。

阅读全文 »

工厂模式

概念

上一篇讲到简单工厂模式,简单工厂模式中,我们建立了一个工厂类,当需要某一类对象的时候,将相应参数传给工厂类,由工厂类来决定生成何种对象。但有一个缺点,如果新增一个产品类,那我们将不得不对工厂类进行修改,增加新的业务逻辑,违反了面向对象编程中的开闭原则。

阅读全文 »

简单工厂模式

定义

简单工厂模式(Simple Factory Pattern):又称为静态工厂方法(Static Factory Method)模式,它属于类创建型模式。在简单工厂模式中,可以根据参数的不同返回不同类的实例。简单工厂模式专门定义一个类来负责创建其他类的实例,被创建类的实例通常具有共同的父类。

阅读全文 »
0%