【发布时间】:2012-09-12 19:16:15
【问题描述】:
如果我重载!= 运算符并在其他运算符重载器之一中使用class!=,它会接受它作为非重载还是重载?我正在尝试创建一个 noob_ptr(我正在考虑的一种自定义指针包装器)
class noob_ptr
{
private: //does this change the behaviour? public? protected?
bool operator!=(noob_ptr x)
{
...
}
bool operator,(noob_ptr y)
{
...
if(y!=z)...
...
}
...
}
下面的示例是否取消了我班级中重载运算符的使用?
class noob_ptr
{
protected: //or public
bool operator,(noob_ptr y) //yes, z is also a noob_ptr
{
...
if(y!=z)...
...
}
...
private:
bool operator!=(noob_ptr x)
{
...
}
}
【问题讨论】:
-
我没有完全理解你的意思,但是按照
operator==来实现operator!=是很常见的:bool operator!=(const MyClass &lhs, const MyClass &rhs) {return !(lhs == rhs);} -
我的意思是在课堂上,我使用了很多重载器。如果使用它们,它们会改变其他重载器的行为吗?
-
您的问题不清楚。也许您可以发布一个 actual program 来证明您的问题。
-
请参阅下面的会员访问限制我的回答。简而言之,您第二个问题的答案是否定的。
-
为什么你需要超载
operator,?为他人进行愉快的调试?