gpt4 book ai didi

c++ - C++中的 bool 运算符

转载 作者:行者123 更新时间:2023-11-30 02:38:12 26 4
gpt4 key购买 nike

这是我在初学者文件中找到的代码片段:

struct TriIndex       //triangle index?
{
int vertex; //vertex
int normal; //normal vecotr
int tcoord; //

bool operator<( const TriIndex& rhs ) const {
if ( vertex == rhs.vertex ) {
if ( normal == rhs.normal ) {
return tcoord < rhs.tcoord;
} else {
return normal < rhs.normal;
}
} else {
return vertex < rhs.vertex;
}
}
};

我以前从未在结构中见过 bool 运算符。谁能给我解释一下?

最佳答案

TL;DR:函数内的代码正在评估是否 *this< rhs , bool仅仅是返回类型。

运算符是operator <这是小于运算符。当前对象被认为是左侧lhs , 和对象进行比较, a < b 的右 watch 达式是 rhs .

bool  // return type
operator < // the operator
(const TriIndex& rhs) // the parameter
{
...
}

它返回 true如果当前对象是 less than (应该在容器等之前) < 之后的对象在这样的表达式中:

if (a < b)

扩展为

if ( a.operator<(b) )

一个 bool 运算符:

operator bool () const { ... }

预期确定对象是否应评估为真:

struct MaybeEven {
int _i;
MaybeEven(int i_) : _i(i_) {}
operator bool () const { return (_i & 1) == 0; }
};

int main() {
MaybeEven first(3), second(4);
if (first) // if ( first.operator bool() )
std::cout << "first is even\n";
if (second) // if ( second.operator bool() )
std::cout << "second is even\n";
}

关于c++ - C++中的 bool 运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31039900/

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