首页 > 其他分享 >operator bool 函数

operator bool 函数

时间:2023-08-14 22:55:24浏览次数:43  
标签:函数 wut explicit Test bool operator your

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

相关文章

  • 利用钩子函数增强HTTP请求处理
    From: 原创测试玩家勇哥测试玩家勇哥2023-06-1619:24发表于广东在自动化接口测试中,我们经常需要发送HTTP请求来模拟用户的操作并验证接口的正确性。够灵活处理请求参数、添加认证信息以及处理依赖参数。这正是钩子函数的用武之地。下面勇哥将以一个实际的示例场景为例,详......
  • Go 语言递归函数
    递归,就是在运行的过程中调用自己。阶乘packagemainimport"fmt"funcFactorial(xint)(resultint){ifx==0{result=1}else{result=x*Factorial(x-1)}return}funcmain(){variint=15fmt.Printf("%d的阶乘是%d\n",i......
  • Hive SQL 的 ntile 分组切片函数
    HiveSQL的ntile函数用于将分组数据按照顺序切分成n组,并返回当前切片值。如果切片不均匀,默认增加第一个切片的分布。它把有序的数据集合「平均分配」到指定的数量(n)个桶中,将桶号分配给每一行。如果不能平均分配,则优先分配较小编号的桶,并且各个桶中能放的行数最多相差1。语法......
  • 经典面试题函数柯里化: add(1)(2)(3) = 6
    functioncurrying(){constargs=Array.prototype.slice.call(arguments);constinner=function(){args.push(...arguments);returninner;};inner.__proto__[Symbol.toPrimitive]=inner.toString=inner.getValue=()=>......
  • glDebugMessageCallback函数是什么?
    图形编程想要调试并不是一件容易的事,有的时候渲染出全黑的结果基本上只能凭经验来查错,特别是对于着色器,断点日志都是无效的,因此想办法掌握一些调试方法还是有必要的,不然找错误的源头可能真的会非常困难参考:https://blog.csdn.net/Jaihk662/article/details/108801019glDebugMess......
  • (继续)完善PS端YOLO网络前向计算函数
    继续完善PS端YOLO网络前向计算函数目标在PS端实现YOLO网络的前向计算对不同的卷积层进行配置和优化比较PS端和Python端的计算结果前提PS端使用卷积计算模块,可以同时处理8个通道的数据PS端使用量化模块,可以对数据进行量化和反量化,以减少内存占用和提高运算速度PS端使用......
  • vue函数式组件
    <template>改为<templatefunctional>即可然后模板里使用到父组件参数的话,需在变量前面加上props,如<div>{{count}}</div>改为<div>{{props.count}}</div>如果组件比较简单,只是展示数据的话,可以使用函数式组件,函数式组件没有生命周期(beforeCreated、beforeDestroy),可提升......
  • vuex辅助函数使用
    一:mapState的使用此函数返回一个对象,生成计算属性-当一个组件需要获取多个状态时候,将这些状态都声明为计算属性会有些重复和冗余。mapState可以声明多个需要在组件中引入:需要在组件中引入:import{mapState}from'vuex'...mapState({/......
  • Python学习 -- 常用函数与实例详解
    在Python编程中,数据转换是一项关键任务,它允许我们在不同数据类型之间自由流动,从而提高代码的灵活性和效率。本篇博客将深入探讨常用的数据转换函数,并通过实际案例为你展示如何巧妙地在不同数据类型之间转换。数据类型转换函数Python提供了多种数据类型转换函数,以下是其中几个常用的......
  • 有趣的ReadFile函数第4个参数
    最近使用ReadFile对文件进行异步读取时发现微软对于此接口的第4个参数有特别备注win7上此参数不能为空:[out,optional]lpNumberOfBytesRead指向使用同步 hFile 参数时接收读取的字节数的变量的指针。 ReadFile 将此值设置为零,然后再执行任何工作或错误检查。如果这是一个......