拒绝编译器自动生成的函数

  • Post author:
  • Post category:其他



编译器自动的函数:

  • 默认构造函数
  • 析构函数
  • 拷贝构造函数
  • 赋值构造函数(operator =)

有些场景中需要拒绝这些编译器自动生成的函数,可以通过下列方法,定义Uncopyable类并继承它。


拒绝使用编译器生成的函数:

class Uncopyable
{
    protected:     //允许derived对象析构
        Uncopyable(){};
        ~Uncopyable(){};
    private:       //拒绝copy
        Uncopyable(const Uncopyable&); //在这里声明,不用定义
        Uncopyable& operator=(const Uncopyable&)
};

这样编译器就可以拒绝产生copy构造函数,和operator=。



版权声明:本文为BloodRose1991原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。