禁止拷贝构造和赋值

来源:互联网 发布:神户制钢造假 知乎 编辑:程序博客网 时间:2024/05/16 15:27

C++实现时有时会希望有些类只保持一份独一无二的实例,因此要在设计上禁止拷贝构造和赋值。

muduo里陈硕大神就经常这样用,不过实现也很简单:

#include <iostream>class NoCopyable{protected:NoCopyable(){}virtual ~NoCopyable(){}private:NoCopyable(const NoCopyable&);const NoCopyable& operator=(const NoCopyable&);};class A : private NoCopyable{};int main(){A a;A b;a = b;}

NoCopyable把拷贝构造和赋值函数 私有化,A私有继承NoCopyable了,自然也继承了NoCopyable的二者接口(并不需要实现),这样就起到作用啦。

可以自己测试下,大笑

0 0