“if话语中的条件表达式可以是任何算术表达式”中的算术表达式指的是基本类型组成的表达式么
“if语句中的条件表达式可以是任何算术表达式”中的算术表达式指的是基本类型组成的表达式么?
书上的原话:
这也意味着任何算术或者指针表达式都可以用做条件。
还是说算术表达式本来就是应该由基本类型组成的?
但是我写的这段代码报错了:
我知道这个应该定义"operator bool();"。我只是想知道那句话中的算术表达式具体指什么。
------解决方案--------------------
标准中的说法是if的条件不管是单纯的表达式还是变量声明,只要值能转换为bool就可以
不管是不是什么算术,指针,自定义类型
------解决方案--------------------
先看这里,http://msdn.microsoft.com/en-us/library/fh88ctk1.aspx,这里是if Statement的定义。
再看这里,http://msdn.microsoft.com/en-us/library/40b07dd5.aspx,这是expression的定义。
书上的原话:
这也意味着任何算术或者指针表达式都可以用做条件。
还是说算术表达式本来就是应该由基本类型组成的?
但是我写的这段代码报错了:
#include <iostream>
using namespace std;
class cond
{
int i;
public:
cond( int );
cond& operator +=( cond a ) //顺便问一下这个怎么像构造函数一样定义到类定义的外面。
{
i += a.i;
return *this;
}
};
cond::cond( int a )
{
i = a;
}
cond operator +( cond a, cond b )
{
cond c = a;
return c += b;
}
int main()
{
cond test1( 3 );
cond test2( 4 );
if( test1 + test2 ); //这里报错。
return 0;
}
我知道这个应该定义"operator bool();"。我只是想知道那句话中的算术表达式具体指什么。
------解决方案--------------------
标准中的说法是if的条件不管是单纯的表达式还是变量声明,只要值能转换为bool就可以
不管是不是什么算术,指针,自定义类型
------解决方案--------------------
先看这里,http://msdn.microsoft.com/en-us/library/fh88ctk1.aspx,这里是if Statement的定义。
再看这里,http://msdn.microsoft.com/en-us/library/40b07dd5.aspx,这是expression的定义。