我正在篡改我的C++(例如,尝试进入更现代风格的编码)并且正在查看删除说明符.我的理解是,它用于确保无法定义或调用某些功能.如果我理解正确,这主要是在分配和复制的范围内.我不太确定使用删除说明符和将这些函数设为私有之间的区别.
例如,有什么区别:
class Foo {
private:
Foo& operator(const Foo&);
Foo(const Foo&);
};
Run Code Online (Sandbox Code Playgroud)
和
class Bar {
public:
Bar& operator(const Bar&) = delete;
Bar(const Bar&) = delete;
};
Run Code Online (Sandbox Code Playgroud)
换句话说:使用删除说明符获得了什么?只是让事情看起来更好吗?
一个明显的区别是,如果您将函数设为私有,那么仍然可以从班级内部和任何朋友访问它。
显式删除的函数在任何地方都不可用,因此您只需从这一行就知道它从未使用过,而无需检查实现。
您可以将函数设置为私有和删除:这样它对重载决策的参与就更加一致。
| 归档时间: |
|
| 查看次数: |
296 次 |
| 最近记录: |