c++:删除==或任何其他特定类型的操作符

C++: Remove == or any other operator for specific types

本文关键字:类型 操作符 任何 删除 c++ 其他      更新时间:2023-10-16

如果我有一个名为classA的类,它具有classB和classC的类型转换重载,我如何禁用==操作符使classA被类型化为classC?

class classA{
   operator classB();
   operator classC();
   //Remove this comparison possibility:
   operator ==(classC firstObject,classC secondObject);
}

从这个问题开始:

使用多个类型转换时的模糊重载

在c++ 11中,可以删除方法
这与将方法设为私有类似。
然而,它表达了程序员的意图,并导致更多描述性编译器错误。

class classA{
   operator classB();
   operator classC();
   //Remove this comparison possibility:
   classC operator ==(classC secondObject) = delete;
};

定义操作符,使其为private