提问人:John 提问时间:10/9/2023 最后编辑:John 更新时间:10/9/2023 访问量:63
std::shared_ptr 的 bool 运算符在表达式中是如何被修改的(即 'bool is_empty = shared_ptr1 && shared_ptr2;' )?
How the bool operator of std::shared_ptr is trrigered in the expression(i.e. `bool is_empty = shared_ptr1 && shared_ptr2;` )?
问:
Gaven that 和 are both shared_ptr,std::shared_ptr 的 bool 运算符如何在表达式中进行尝试(即 )?cur_front_res
cur_back_res
bool is_empty = cur_front_res && cur_back_res;
仅仅因为如果操作数(即之前和之后)不是布尔类型,总是会导致内置转换?&&
&&
&&
#include <iostream>
#include <memory>
int main() {
std::shared_ptr<int> cur_front_res; // Empty shared_ptr
std::shared_ptr<int> cur_back_res(new int(42)); // Shared_ptr pointing to an int
bool is_empty = cur_front_res && cur_back_res;
if (is_empty) {
std::cout << "Both cur_front_res and cur_back_res are not empty" << std::endl;
} else {
std::cout << "Either cur_front_res or cur_back_res is empty" << std::endl;
}
return 0;
}
答:
5赞
HolyBlackCat
10/9/2023
#1
仅仅因为如果操作数(即之前和之后)不是类型,总是会导致内置转换?
&&
&&
&&
bool
基本上是的。
但是这种转换有些特殊:即使 s 通常是(包括 for ),但在少数情况下可以隐式地调用它(“上下文布尔转换”)。除其他外,这些包括布尔运算符的操作数、条件等。bool
operator bool
explicit
shared_ptr
if
while
for
评论