c++ - 我没有得到运算符重载

标签 c++ operator-overloading

struct nodo{
    int v,k,dist;

    nodo(){
    }

    nodo(int _v, int _k, int _dist){
        v=_v;
        k=_k;
        dist=_dist;
    }

    bool operator < (nodo X) const{
        return dist>X.dist;
    }
}

我正在尝试理解这段代码。但我没有得到 bool 运算符部分。

“return dist>X.dist”是什么意思? 如果 dist 大于 X.dist,返回 true?

最佳答案

what does mean by "return dist>X.dist"? If dist is bigger than X.dist, return true?

你是对的。

运算符与普通成员函数没有什么不同。编译器只在找到该运算符时执行该函数。

你可以试着写一个打印语句,看看会发生什么

bool operator < (nodo X) const{
    std::cout << "Operator < called" << std::endl;
    return dist < X.dist; // I changed the sign because it looks more natural
}

// ...

int main() {
    nodo smallnode(1,2,3);
    nodo bignode(4,5,6);
    std::cout << "First node Vs Second Node" << std::endl;
    if (smallnode < bignode)
       std::cout << "It's smaller!" << std::endl;
    else
       std::cout << "It's bigger!" << std::endl;
}

关于c++ - 我没有得到运算符重载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43028065/

相关文章:

ios - Swift:在另一种类型上使用重载的 == 运算符

C++ 成员与非成员运算符+

c++ - 调用重载运算符失败时用户定义的枚举类隐式转换

c++ - C++ 中的运算符重载 - 为什么我们需要将参数作为 const & (...) 传递?

c++程序运行不正确的else语句

c++ - 没有为类引用定义哈希?

c++ - std::basic_filebuf::seekpos 的文档

java - 重用代码 - Java

c++ - 如何在其他文件中使用 .mm 文件中的 C++ 类对象?

c++ - 我可以检查初始化列表中设置的构造函数主体中的变量吗?