gpt4 book ai didi

c++ - 为什么使用转换为 int,而不是 bool?

转载 作者:太空狗 更新时间:2023-10-29 20:19:46 26 4
gpt4 key购买 nike

我为一个类实现了两次转换。一种是 bool,一种是 int&。

如果我隐式转换为 int,它使用 int& 转换,但如果我想要一个 bool,它仍然使用 int& 转换。

struct A
{
operator bool() const;
operator int&();
};

// trying to call these:
A a;
int i_test = a; // calls operator int&()
bool b_test = a; // calls operator int&()

我知道 a 被隐式转换为 int&,然后转换为 bool,但为什么它需要更长的路径?如何在不必编写 a.operator bool() 的情况下避免它?

最佳答案

A a; 声明一个非常量对象。由于转换函数是一个成员函数,它接受一个指向a 的隐式this 指针。重载决策将选择非常量限定成员,因为它是在非常量对象上调用的。

触发重载决议的是 bool 值的转换这一事实有点转移注意力。函数的返回类型(int&bool)仅使它们成为重载决策的候选者(因为它们将适用于转换为 bool),但它不足以确定重载决议本身的结果。

关于c++ - 为什么使用转换为 int,而不是 bool?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56577956/

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