有关C++对象与bool比较时的操作符重载
来源:互联网 发布:兽血天龙网络连接 编辑:程序博客网 时间:2024/06/01 07:32
需要实现operator bool ()的重载。
struct MyClass{ explicit operator bool() const { return true; } };
如上:
写了一个完整的例子
#include <iostream>using namespace std;class MyClass{public: MyClass(int value):mValue(value) { } operator bool () { cout << "mmeber function:operator bool() called "<<mValue<<endl; return mValue; } bool operator == ( const bool &rhs ) { cout << "mmeber function:bool operator == ( const bool &rhs ) called"<<endl; return (bool)mValue == rhs; }private: int mValue;};bool operator == ( const MyClass &lhs, bool rhs ){ cout << "global bool operator ==( const MyClass &lhs, bool &rhs ) "<<endl; return true;}bool operator == ( const bool &rhs,const MyClass &lhs ){ cout << "global bool operator == ( bool &rhs,const MyClass &lhs )"<<endl; return true;}int main(){ MyClass c1(0); MyClass c2(10); if ( c1 ) { cout << " test1 true "<<endl; } else { cout << " test1 false"<<endl; } //bool result = (true == c1); if ( true == c1 ) { cout << "test2 true"<<endl; } else { cout << "test2 false"<<endl; } if ( c2 == false ) { cout << "test3 true"<<endl; } else { cout << "test3 false"<<endl; }}
输出如下:
mmeber function:operator bool() called 0 test1 falseglobal bool operator == ( bool &rhs,const MyClass &lhs )test2 truemmeber function:bool operator == ( const bool &rhs ) calledtest3 false
- 有关C++对象与bool比较时的操作符重载
- 调用操作符的重载与函数对象
- 调用操作符的重载与函数对象
- 调用操作符的重载与函数对象
- Effective C++(10) 重载赋值操作符时,返回该对象的引用(retrun *this)
- bool变量与零值的比较
- 1.5操作符重载与临时对象
- 有关C和C++中的bool值的使用问题
- 有关C语言中bool类型的思考
- 自定义对象与bool之间的转换
- 【C++面向对象】[]操作符的重载
- C++ 自定义比较:仿函数、函数与重载操作符
- C#中bool 与Boolean 的区别
- BOOL 与bool 的区别
- BOOL与bool 的区别
- BOOL与bool的区别
- BOOL与bool的区别
- BOOL与bool的区别
- 例题2-4
- HDU 4525 威威猫系列故事——吃鸡腿 2013腾讯编程马拉松初赛第五场第一题
- 关于正则表达式使用的一些心得
- ubuntu 12.04 64bit, chronium-browser, 上不了mail.qq.com
- ZOJ 3682 E - Cup 3
- 有关C++对象与bool比较时的操作符重载
- c#中执行多句dos命令
- hdu4526
- openSUSE 12.3软件源
- 找出有环链表中环的起点
- Jacob生成word文档 由打卡记录生成加班和调休申请单
- 例题3-1
- DirectX 3D_基础之表面 多重采样 内存池 交互链 页面置换 深度缓存
- Webx3.0学习笔记(二):创建一个简单的Webx项目