关于 if(类对象) 语法的研究
来源:互联网 发布:java服务器类型 编辑:程序博客网 时间:2024/06/14 12:57
class Object{};int main(int argc, char *argv[]){Object obj;if(obj){//do something}else{//do something else}return 0;}
上面这段代码将会导致编译错误。
要想通过编译,可以这样更改
class Object{public:operator bool(){return true;}};或者这样更改
class Object{public:operator int(){return true;}};
或者是
class Object{public:operator float(){return false;}};如果有多个重载呢,比如
class Object{public:operator bool(){return true;}operator int(){return false;}operator float(){return false;}};这时if(obj)将会调用operator bool()
但是如果只重载operator int()和operator float()呢?
class Object{public:operator int(){return false;}operator float(){return false;}};这将导致编译错误。
总结:
1,要使if(obj)通过编译,obj对象的类必须重载了operator bool或者其它可以转化为bool的操作符,比如operator int,char,long,float,double等等。
2,如果重载了operator bool,将会优先调用此重载函数。
3,如果没有重载operator bool,而又重载了多个可以转化为bool 的操作符将会导致编译错误,以为编译器不知道选择哪一个。
- 关于 if(类对象) 语法的研究
- 关于shell中if 语法结构的广泛误解
- 关于bash 中 if 语法结构的广泛误解
- 关于bash中if语法结构的广泛误解
- linux的if语法
- makefile的if语法
- javascrib 的if语法
- python的for if语法
- 关于javascript中Math对象的属性与方法研究
- 深度剖析关于Js中对象的研究
- if 语法
- 关于if if和if elseif的区别
- c++对象模型研究1:关于对象
- 高级语法 break if 的使用
- 【PHP内核】语法:IF判断的实现
- js语法中if语句的替代
- (if-else语法)找零的计算
- 面向对象名词:类属的研究!
- Question in SAP MM
- 黑马程序员 面向对象学习二
- android string.xml %问题。
- C语言中#、##的作用
- 黑马程序员 动态代理学习笔记一
- 关于 if(类对象) 语法的研究
- 服务器发布tomcat的WEB项目供外网访问
- Error Parsing XML: unbound prefix--关于Android中的xliff
- SecureCRT和Xmanager解决向上、向下跳回已经执行过得sql
- AIX_时间同步配置
- android4.0自定义锁屏apk形式总结
- 匀速贝塞尔曲线运动的实现(转)
- android 如何判定是否首次使用
- hdu-3784-继续XXX定律