modernize-replace-disallow-copy-and-assign-macro¶
查找 DISALLOW_COPY_AND_ASSIGN(Type)
的宏展开,并将其替换为已删除的复制构造函数和已删除的赋值运算符。
在 C++11 中引入 delete
关键字之前,将复制构造函数和赋值运算符声明为私有成员是一种常见的做法。这实际上使它们无法用于类的公共 API。
随着 C++11 中 delete
关键字的出现,我们可以放弃复制构造函数和赋值运算符的 private
访问权限,并完全删除这些方法。
当对如下代码运行此检查时
class Foo {
private:
DISALLOW_COPY_AND_ASSIGN(Foo);
};
它将被转换为:
class Foo {
private:
Foo(const Foo &) = delete;
const Foo &operator=(const Foo &) = delete;
};
已知限制¶
请注意,上面的迁移示例保留了
private
访问说明符。您可能希望运行检查 modernize-use-equals-delete 以获取私有部分中已删除函数的警告。
选项¶
- MacroName¶
指定将替换其展开的宏名称的字符串。默认值为 DISALLOW_COPY_AND_ASSIGN。
请参阅:https://cppreference.cn/w/cpp/language/function#Deleted_functions