C++中一个关于对象的问题

来源:百度知道 编辑:UC知道 时间:2024/07/04 10:01:51
已知obj是一个对象,下面哪一个表达式是不可能出现的()
A. obj.100 B. ! obj C. obj++ D. obj,100
答案是A,请解释一下B,C,D的含义

B和C大多是运算符重载,比如读取一个文件myFile(是fstream类型),那么!myfile就表示不存在这个文件或者打开失败.
obj++也大多是运算符重载,比如Car a;a++就可能表示a的速度加一个档次.
D是逗号表达式,取的值是后面的,就是100,比如if(obj,100),是一个恒真的表达式.

B. ! obj 如果对象存在那么这个就为0 ,否则为1

C. obj++ 这个是对对象进行加一运算。结果指向下一个对象(内存中的下一个对象)

D. obj,100 这个当然就是逗号表达式了。

B、C :obj 的 class 中定义了 operator !、operator ++(int) 的运算符重载,具体意义根据情况而定,通常 ! 与 operator bool 意义相反。
D:逗号表达式,表达式返回值为逗号后面的表达式的返回值。( obj,100 )始终为 100 。

楼上解释的不错