条款06: 若不想使用编译器自动生成的函数,就该明确拒绝

结论
为驳回编译器自动提供的机能,可将相应的成员函数声明为private并且不予实现。

topic1: =delete的使用

使用规则

  • 禁止类使用默认生成的成员函数,最好设置为private,同时设置为=delete
  • 禁止类使用其他类成员函数

场景一:禁止使用编译器生成的默认成员函数

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

场景二:禁止使用其它类成员函数

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