请问:由一个失误引来的费解(C++)

来源:百度知道 编辑:UC知道 时间:2024/07/16 13:52:21
//这是一个长方形的类,其中函数是为了输出体积
#include<iostream>
using namespace std;
class Box
{
public:
Box(int h=2,int w=2,int l=2){height=h;length=l;width=w;cout<<"constructor:"<<endl;}
~Box(){cout<<"destructor:"<<endl;}
int volume();
private:
int height;
int width;
int length;
};
int Box::volume()
{
return height*width*length;
}
int main()
{
Box b1(10,19,12);
/*int a;
a=b1.volume();
cout<<a<<endl;*/
cout<<b1.volume<<endl;//怎么会输出 1 呢
cout<<b1.volume()<<endl;//(一不小心忘了加括号了得到了这个问题o(∩_∩)o...)
return 0;
}//万分感谢

你用printf("%d\n", b1.volume);打印出来就是4198410,在你那不一定是这个值,这个值就是函数在内存中的地址,
但是cout的时候不能输出这个地址,因为c++编译器认为你这个输出有问题,对他进行了转化,至于为什么输出是1,你就要问编译器把他转化成什么了

这里是个错误:integral size mismatch in argument; conversion supplied

肯定是随机分配的一个数!
你把所有的函数 后面不加括号打印出来都是1!
没有什么意思!

我的vs2005是编译不通过的,显示如下啦:
错误 1 error C3867: “Box::volume”: 函数调用缺少参数列表;请使用“&Box::volume”创建指向成员的指针 d:\Documents and Settings\Administrator\桌面\test\f\f\f.cpp 25
纯粹是编译器问题。

这个跟编译器有关。我这边还编译不过。
不过一般的编译器 &Base::f 好像都返回1