ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

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

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

使用delete

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

优点

  1. 意图最清晰:代码直接读作“禁止拷贝”。
  2. 编译期报错:甚至比 private 技巧更早被编译器捕获。
  3. 甚至可以是 Public:通常建议在 public 区域声明 = delete,这样编译器会先给出“函数被删除”的错误信息,而不是“私有访问权限”的错误信息,前者通常更易读。
返回列表