Kir*_*rov 16 c++ private delete-operator c++11
我读过这个问题,但它对我来说仍然没有多大意义.它听起来更像是糖衣涂层功能.
有什么区别:
class A
{
// public/private ?
A (const A&) = delete;
};
Run Code Online (Sandbox Code Playgroud)
和
class A
{
private:
A (const A&); // MISSING implementation
};
Run Code Online (Sandbox Code Playgroud)
相同operator=或其他功能.
Dan*_*rey 19
一个区别是=delete允许编译时错误,而在某些情况下,没有定义的声明仅在链接时捕获(错误消息通常不会指向您的问题源).一种情况是当您添加尝试复制实例的成员函数时A.即使它不是成员函数A,关于copy-ctor的错误消息private也不如使用那么清楚=delete.
为避免混淆,我建议您删除已删除的功能public,否则您将收到其他错误消息.
utn*_*tim 12
不同之处在于=delete代码的目的在于它的目的.将功能声明为private/不可访问是一个技巧.虽然大多数人都知道它,但它产生的错误是模糊的(链接/访问级别错误而不是代码中的语义问题 - 即"你正在使用已删除的函数").
| 归档时间: |
|
| 查看次数: |
2041 次 |
| 最近记录: |