項目 06: コンパイラによって自動生成された関数を使用したくない場合は、明示的に拒否する必要があります

結論:
コンパイラによって自動的に提供される機能を拒否するには、対応するメンバー関数をプライベートとして宣言し、実装しないことができます。

topic1: =delete の使用

利用ルール

  • クラスがデフォルトで生成されたメンバー関数を使用できないようにします。それらを private および =delete に設定することをお勧めします。
  • クラスが他のクラスのメンバー関数を使用することを禁止する

シナリオ 1: コンパイラによって生成されたデフォルトのメンバー関数の使用を禁止する

class A
{
    
    
public:
	A(){
    
    }
	~A(){
    
    }
private:
	A(const A&) = delete;//拷贝构造函数
	A& operator=(const A&) = delete;//赋值运算符
}

シナリオ 2: 他のクラスのメンバー関数の使用を禁止する

class A
{
    
    
public:
    A(){
    
    }
    int fun1(int a) = delete;
};

int main(){
    
    
    A* temp = new A();
    temp->fun2(1); 		//使用错误
    return 0;    
}

おすすめ

転載: blog.csdn.net/gaochubusheng/article/details/131541973