C 如何选择要在(类)中使用的操作员
How does C++ select which operator to use in if (class)?
我有一个模拟整数行为的类。它具有以下超载:
class myInt
{
...
operator int() const { return val; }
operator bool() const { return 0 != val; }
operator myInt *() { assert(0); return NULL; } // Cast to pointer not supported
...
private:
int val;
}
当我使用如下时:
myInt i = 0;
if (i) ...
它击中了指针铸造的断言。
为什么C 在If?
中选择此而不是布尔操作员欢呼,
ian
随着进一步的研究,事实证明操作员布尔的常量是问题。
编译器更喜欢非const运算符Myint *((而不是操作员bool((const。
当我添加以下过载时:
operator bool() { return 0 != val; }
代码根据需要进入布尔操作员。
相关文章:
- 如何使用默认参数等选择模板专业化
- 如何(从固定列表中)选择一个数字序列,该序列将与目标数字相加
- 选择要调用的构造函数
- C++选择排序算法中的逻辑错误
- QTreeView幻灯片多选后无法使用单击选择
- 函数何时会在c++中包含stack_Unwind_Resume调用
- 无法获取菜单选择以运行函数.C++
- Qt C++静态thread_local QNetworkAccessManager是线程应用程序的好选择吗
- Python中的for循环与C++有何不同
- 在C++中,如何通过几种类型从元组中选择多个元素
- <<操作员在下面的行中工作
- 讨论 - 创建矩阵时的数组与向量的向量 - 什么是最实用的选择
- 对可变参数使用声明.如何选择正确的功能
- 选择选举获胜者的程序
- 如何选择在 csv 文件中输出的位置
- 根据用户回答声明"Players"。用户选择玩家数量。播放器是结构体
- C++ 与操作员不匹配<<
- 程序在尝试猜测它选择的随机数时进入无限循环?
- C 如何选择要在(类)中使用的操作员
- SFINAE 过载选择有或没有操作员<<