zoukankan      html  css  js  c++  java
  • C++实现不可被复制的类

    C++语言编程中,类的拷贝主要是通过拷贝构造函数和赋值函数来进行,再者就是为拷贝专门实现的成员方法。
    由于拷贝构造函数和赋值函数在用户为提供的情况下是由C++编译器自动生成的,而且是public成员,因此默认的C++类都有拷贝功能。

     一个默认的C++类所拥有的成员函数:

    class Empty{}; //空类Empty
    
    Empty();             //默认构造函数
    Empty(const Empty &);//默认拷贝构造
    ~Empty();           //默认析构函数
    Empty & operator=(const Empty &)//默认赋值运算符
    Empty *operator&();//取地址运算符
    const Empty *operator &() const; //取地址运算符const

    程序员有时候需要给文件加上权限,让这些机密文件不能被随意拷贝,这时候就需要用C++实现不可被拷贝的类。
    若让一个C++类不能被拷贝,可显式地声明类的拷贝构造函数和赋值函数为私有函数,从而达到该类不可被拷贝的目的。
    下面简单地提供一个基类,任何需要提供不可被拷贝功能的C++类只需从此类派生即可。
    ————————————————

    Noncopyable类示例:

    #ifndef  BASE_NONCOPYABLE_H
    #define  BASE_NONCOPYABLE_H
    
    class noncopyable
    {
     public:
      noncopyable(const noncopyable&) = delete;
      void operator=(const noncopyable&) = delete;
    
     protected:
      noncopyable() = default;
      ~noncopyable() = default;
    };
    
    #endif  // BASE_NONCOPYABLE_H
  • 相关阅读:
    Command 命令模式
    Composite 组合模式
    Decorator 装饰器模式
    Abstract Factory 抽象工厂模式
    输入框测试重点:
    w​e​b​网​站​常​用​测​试​用​例
    性能测试常见分类
    Web 常用的测试方法
    em、rem和px的区别
    [if lt IE 9]等符号的含义
  • 原文地址:https://www.cnblogs.com/music-liang/p/13282999.html
Copyright © 2011-2022 走看看