title: "operator bool 函数"
date: 2023-08-14T16:05:25+08:00
tags: ["C++"]
categories: []
draft: false
参考文档
user-defined conversion function - cppreference.com
The Safe Bool Idiom - 知乎
为什么operator bool()
需要用explicit修饰?
c++ - Why does declaring an operator bool() const
member overload the [] operator? - Stack Overflow
The operator is coming from the built-in subscript operator which treats expressions A[B]
as *(A + B)
.
This results in the evaluation of *(1 + "wut")
=> 'u'
, which then causes the if
condition to pass, as 'u'
is a non-zero value.
Declare your member as explicit operator bool() to prevent your type from being implicitly converted to other integral types.
#include <iostream>
using namespace std;
struct Test {
operator bool() const {
return true;
}
};
int main(int argc, char** argv) {
Test test;
if (test["wut"])
cout << "Success (test[\"wut\"])\n";
}
一个operator bool()
的坑
c++ - Why is my "explicit operator bool()" not called? - Stack Overflow
标签:函数,wut,explicit,Test,bool,operator,your From: https://www.cnblogs.com/devin1024/p/17630008.html