首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

c++函数调用时没带括号结果是1

2012-09-25 
c++函数调用时没有带括号结果是1#includeiostreamusing namespace stdclass Time{public:int aint get

c++函数调用时没有带括号结果是1
#include<iostream>
using namespace std;
class Time
{
public:
int a;
int geta(){
return a;
}
};
int main()
{
Time t;
t.a=3;
cout<<sizeof(Time)<<endl;
cout<<sizeof(t);
cout<<t.geta<<endl;
cout<<t.geta()<<endl;
  return 0;
}
问题是vc6.0中 sizeof(t) 为什么等于41,t.geta为什么等于1?求高手解释 谢谢



[解决办法]
sizeof(t) == 4,后面的 1 是因为 t.geta 输出的,你中间没有换行。
t.geta 被强转为 bool,因为是成员函数肯定是一个非零的值,所以变成 1 了。
实际上好的编译器 t.geta 这句应该报错的,因为 t.geta 只能用于调用该成员函数或取该成员函数地址。
[解决办法]

探讨
sizeof(t) == 4,后面的 1 是因为 t.geta 输出的,你中间没有换行。
t.geta 被强转为 bool,因为是成员函数肯定是一个非零的值,所以变成 1 了。
实际上好的编译器 t.geta 这句应该报错的,因为 t.geta 只能用于调用该成员函数或取该成员函数地址。

热点排行