gpt4 book ai didi

c++ - 以下小于(<)运算符合法的类型 T 是什么?

转载 作者:行者123 更新时间:2023-11-30 04:05:40 24 4
gpt4 key购买 nike

在阅读 Notes On Programming 的书“Alexander Stepanov ”时,我遇到了他提到的以下问题(第07页)。它是关于任何类型 T小于 (<) 运算符

  • 解释为什么这对任何类 T 都是错误的?
template<typename T>
bool operator<(const T& x, const T& y) {
return true;
}
  • 解释使该定义合法的对 T 的要求是什么?
template<typename T>
bool operator<(const T& x, const T& y) {
return false;
}

我无法理解上面的代码可以正常工作的 T 类型。到目前为止,我认为(第二点)以下类型(指针)可能是合法的。我知道这没有多大意义(比较指针类型不是个好主意),这也取决于创建了哪个订单对象。

class test { };
test x;
test y;
// &x = 0x7fffffffe0bd, &y = 0x7fffffffe0be
bool out = &y < &x;
//out = 0;

我在这里遗漏了一些明显的东西吗?有人可以解释这两种情况吗?

最佳答案

Explain what are the requirements on T that makes this definition legitimate?

template<typename T>
bool operator<(const T& x, const T& y) {
return false;
}

所有实例都被认为是“相等”的类型。

a < b; // false
b < a; // false

以上对于 a == b 来说完全没问题。因此,为了保持一致性,如果 T 有一个 operator==,它应该总是返回 true

关于c++ - 以下小于(<)运算符合法的类型 T 是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23183664/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com