关于自定义类型直接放入判断语句

时间:2010-05-07 18:37:04  来源:第二电脑网  作者:第二电脑网

  第二电脑网导读:");assert(in);中,assert(in)其实就是assert(!in.fail());所以要想我们自己定义的类型也可以像流一样直接方在判断语句中,我需要写两个操作符函数struct Test{...  operator void*();  bool operator!();...};那么我们也可以Test t;assert(t);if(t)cout<<"yes"<<endl;if(!t)cout<<"no"<<endl;
  正文:

在很多时候,我们都直接用stream来直接放在判断语句中。
其中的原因是:在判断语句中对自定义类型会调用operator void*()函数返回void*型的指针.
而在流的operator void*()中是这样定义的return (fail()?0:(void*)this);
所以在ifstream in("1.txt");assert(in);中,assert(in)其实就是assert(!in.fail());


所以要想我们自己定义的类型也可以像流一样直接方在判断语句中,我需要写两个操作符函数
struct Test
{
...
  operator void*();
  bool operator!();
...
};
那么我们也可以
Test t;
assert(t);
if(t)cout<<"yes"<<endl;
if(!t)cout<<"no"<<endl;

关于自定义类型直接放入判断语句》由第二电脑网原创提供,转载请注明:http://www.002pc.com/master/College/Language/VC/2010-05-07/13920.html


关键字:

关于《关于自定义类型直接放入判断语句》文章的评论

站内搜索: 高级搜索

热门搜索: Windows style 系统 tr IP QQ CPU 安装 function 注册 if td