C++ 类的重载运算符不会被调用

Posted

技术标签:

【中文标题】C++ 类的重载运算符不会被调用【英文标题】:Overloaded operator for C++ class doesn't get called 【发布时间】:2013-10-26 19:26:19 【问题描述】:

在我的课堂上,我将原型(公共)写为:

bool operator< (const MyClass& obj);

我在类外(在同一个文件中)实现方法:

bool MyClass::operator< (const MyClass& obj)

    cout << "operator< used" << endl;
    //do my work

问题是,虽然我的重载运算符会在我显式调用(如obj1-&gt;operator&lt;(*obj2))时被调用,但在隐式调用时不会被调用(如obj1 &lt; obj2)。

我遵循了来自 this article 的重载教程,但我看不出我遗漏了什么或做错了什么。

【问题讨论】:

【参考方案1】:

obj1obj2 是指针,所以你可以使用 *obj1 &lt; *obj2

【讨论】:

我也希望它是免费的。【参考方案2】:

obj1 和 obj2 是指向 MyClass 的指针。 如果你想调用 operator

【讨论】:

以上是关于C++ 类的重载运算符不会被调用的主要内容,如果未能解决你的问题,请参考以下文章

C++,如何在派生类中调用基类的重载提取运算符?

C++ 输入/输出运算符重载

重载 [] 和 = 运算符以在 C++ 中接受我的模板类的值

C++学习27 用全局函数重载运算符

C++ 从类中调用重载运算符

关于C++函数重载问题