【发布时间】:2011-02-19 17:05:48
【问题描述】:
这两种重载下面的 != 运算符的方法有什么区别。哪个比较好?
Class Test
{
...//
private:
int iTest
public:
BOOL operator==(const &Test test) const;
BOOL operator!=(const &Test test) const;
}
BOOL operator==(const &Test test) const
{
return (iTest == test.iTest);
}
//overload function 1
BOOL Test::operator!=(const &Test test) const
{
return !operator==(test);
}
//overload function 2
BOOL Test::operator!=(const &Test test) const
{
return (iTest != test.iTest);
}
我最近刚刚看到函数 1 调用同级运算符函数的语法,想知道这样编写是否有任何好处。
【问题讨论】:
-
如果您将代码缩进 4 个空格(或将其包装在
和
标签中),SO 将对其进行格式化,以便我们更容易阅读。 -
在您的班级定义 (reddit.com/r/programming/comments/b8ws6) 后缺少
;,BOOL是什么? -
对于 C++ 语言,您应该使用
bool,这是一个已定义的类型。标识符BOOL是一种流行的标识符,用于模拟通常使用 C 语言的布尔类型。BOOL可能是unsigned char或unsigned int,具体取决于平台(甚至没有定义!)。 -
我使用的是 MFC 库中的 BOOL。你说得对,我应该使用 bool。
-
我更喜欢版本 3:free function
operator==和 free functionoperator!=按照前者的方式实现,与版本 1 类似。free functions 的优点是您可以获得您无法获得的类型对称性使用成员方法(不会在左侧执行隐式转换)
标签: c++ class function operators overloading