注册 登录
编程论坛 C++教室

[求助]一个带参的构造函数问题,关于求长方柱体积的。

小四 发布于 2007-10-10 22:48, 1035 次点击

#include<iostream>
using namespace std;
class Box{

public:
Box(int,int,int);
int volume();

private:
int height;
int width;
int length;


};

Box::Box(int h,int w,int len){

height=h;
width=w;
length=len;

}

int Box::volume(){
return(height*width*length);

}


int main(){

Box box1(10,10,10);

cout<<box1.volume()<<endl;

return 0;

}

如果将主函数改成如下

int main() {

Box box1;

cin>>h>>w>>len;
cout<<box1.volume()<<endl;

return 0;
}

为什么不行?

先谢过各位达人了。

[此贴子已经被作者于2007-10-10 22:49:33编辑过]

7 回复
#2
Janlex2007-10-10 23:19
cin>>h>>w>>len;是从键盘输入到缓冲区. 而并没传参到Box类中.

也就是你定义的对象box1, 怎么知道h, w, len是传给他的.
#3
kisscjy2007-10-11 00:22

你的h, w, len 都没有作为参数传给Box1,
那怎么输出他的体积呢???

#4
TenY2007-10-11 10:14

主函数里的h w len, 与你box1那个类里的参数没有一点区别,你要让box1获取到,才有用...

#5
zhb_ice2007-10-11 17:48
lz的都说的差不多了
你只把三个数输入个了三个变量
这个三个变量的值与类内部的没有关系的

#6
忘记喧嚣2007-10-11 22:41
他们的意思就是说 参数名 h w len 在内的任何函数的里都可以用.不会发生冲突.

也就是说参数的作用只限与函数内.不能在外部实现.除非对象的实参传参数给他
#7
海子星竹2007-10-13 15:26

你写的构造函数一定要有参数传入才行

int main()
{
int h, w, len;

cin>>h>>w>>len;
Box box1(h,w,len);
cout<<box1.volume()<<endl;

return 0;
}

#8
爱以走远2007-10-13 16:55
当你第一拉一个构造函数
则系统就不会在分配构造函数拉
因为构造函数是在声明对象的时候就要执行
你定义的对象没参数 所以就错拉.. .
1