搜索

C++中结构体可以直接比较吗

发布网友 发布时间:2022-04-24 13:45

我来回答

5个回答

热心网友 时间:2023-10-15 00:04

默认情况下,C++仅支持基础数据类型,如int, float等类型的直接比较,结构体对象无法直接比较。

不过C++的结构体可以说是类(class)的另一种形式。所以在定义了比较运算符对应的重载函数后,可以直接比较。比较的结果为对应运算符重载的返回值。
如结构体类型为test,那么要实现==的直接比较,有两种方法:
1 在struct test中增加成员函数
bool operator == (const test & value) const;
2 在全局函数中,增加
boot operator == (const test &v1, const test &v2);

热心网友 时间:2023-10-15 00:04

不可以。只能一个field一个field挨着比较比如a.name == b.name && a.score == b.score要不然你要考虑运算符重载。

重载全局比较运算符:
bool operator==(struct student& lhs, struct student& rhs)
{
return lhs.name == rhs.name && lhs.score == rhs.score;
}追问我在写链表的实现、 其中数据的类型开始时候是用宏定为double型的, 现在改成结构体不是要改很多地方嘛? 而且换了一个结构体我还是要再去改啊 这个怎么解决呢?

热心网友 时间:2023-10-15 00:05

不可以直接比较,你需要比较结构体中的哪一部分值呢,可以用student.(那部分)表示,然后进行比较。

热心网友 时间:2023-10-15 00:05

当然不可以了。结构体里的内容可以用.符号直接比较,不然要想直接比较,必须要先重载

热心网友 时间:2023-10-15 00:06

可以比较,你需要重写操作符。也就是> < =的定义
声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。
E-MAIL:11247931@qq.com
Top