Item6--若不想使用编译器自动生成的函数,就该明确拒绝

使用delete

class HomeForSale {
public:
    // 明确告诉编译器:删掉这两个函数,不要生成,也不允许调用
    HomeForSale(const HomeForSale&) = delete;
    HomeForSale& operator=(const HomeForSale&) = delete;
};

优点

  1. 意图最清晰:代码直接读作“禁止拷贝”。
  2. 编译期报错:甚至比 private 技巧更早被编译器捕获。
  3. 甚至可以是 Public:通常建议在 public 区域声明 = delete,这样编译器会先给出“函数被删除”的错误信息,而不是“私有访问权限”的错误信息,前者通常更易读。
posted @ 2025-12-20 21:23  belief73  阅读(0)  评论(0)    收藏  举报