不能被拷贝的类
c++98 只声明(不生成, 编译器默认会生成, 有浅拷贝等的问题), 不实现, 并将其访问设为private
c++11使用=delete来限制
只能在堆上创建对象的类:
只能在堆上创建对象的类:
方式一
delete使用会自动调用析构函数, 所以要销毁这个堆对象, 两种方式:
第二种:
方式二
构造函数私有化, 提供一个函数用于创建对象
这样的方式并不完整, 利用拷贝构造还是能创建栈对象
所以这样的方式还要禁止掉拷贝构造函数才完美
HeapOnly(const HeapOnly& ho) = delete;
设计类只能创建栈对象
私有构造函数, 提供一个接口实现:
但是防不住这样的写法:
这样也不能禁用拷贝构造, 因为在CreateObj中返回局部对象的值要调用拷贝构造,
所以最好的方式是:禁用new 或者是私有化
实现类, 不能被继承
1.构造函数私有化
2.c++11final修饰符
设计模式的概念:被反复使用, 被熟人知晓, 经过分类的, 代码设计经验的总结
(c++是不太关注的, 一般是应用方面比较关注(像Java等语言), 常见的有23种, 这边只细讲单例模式)
迭代器 包装器(适配器)也算设计模式
单例模式设计
思想:对构造函数进行操作
饿汉模式
提前(main函数启动前)准备好,随时getinsert
在类内创建一个该类的对象(此时不允许, 不允许这样的方式来声明), 并且把这个类的对象设为static, 静态的不在对象里面.
这个对象的内存属于静态区, 访问权限属于private, 属于是类内的成员, 此时是属于声明, 定义需要使用类外定义
他的对象获取就需要使用这个方式
同时要禁用拷贝构造和赋值构造:
完整代码及演示
class A
{
public:
static A* GetInsert()
{
return &_inst;
}
void Add(const string& s1, const string&</