“=delete”关键字的使用
1 在特殊函数中进行使用
特殊函数是指在创建类的时候,编译器会隐式的生成以下函数:
C++11之前:
默认构造函数; 析构函数; 拷贝构造函数; 拷贝赋值运算符
C++11之后添加:
移动构造函数; 移动赋值运算符
"=delete"目的:阻止客户使用这些函数
在C++98的时候,已经有这种隐患,当时流行的做法是将这些函数声明为private,当有代码进行访问的时候(透过成员函数/friend class),会产生LINK错误
C++11中,如果见这些函数标记为“=delete”调用会产生编译错误
需要注意的是,如果类内需要调用特殊函数,比如单例模式,建议使用private的形式
class CSingleMode
{
public:
static CSingleMode* GetObj()
{
static CSingleMode single;
return &single;
}
private:
CSingleMode() {}
};
方便起见,会将“=delete”函数声明为public,因为编译器相比较于检查“=delete”会优先检查访问权限,因此可能会得到错误的错误信息
“=delete”可以应用于任意函数上,因此可以用于禁止类型重载。
原文链接: https://www.cnblogs.com/Kaifangqu/p/12634512.html
欢迎关注
微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍
原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/195388
非原创文章文中已经注明原地址,如有侵权,联系删除
关注公众号【高性能架构探索】,第一时间获取最新文章
转载文章受原作者版权保护。转载请注明原作者出处!