3
回答
为什么类在调用函数成员的时候,类成员之前的值都被覆盖成了0呢?
利用AWS快速构建适用于生产的无服务器应用程序,免费试用12个月>>>   
#include<iostream>
using namespace std;

class Box{
   private:
	   double length; 
	   double width;
	   double height;

   public:
	   
	   Box(double a=0,double b=0,double c=0){
		   length = a;
		   width = b;
		   height = c;
	   }
	   ~Box(){} //里面什么都没有的析构函数

	   double surface(Box box){
		   double area;
		   area = 2 * (length*width + width*height + height*length);
		   return area;
	   }

	   double volume(Box box){
		   double volume;
		   volume = length*width*height;
		   return volume;
	   }
}; 

int main(void){
	
	Box box;
	double a, b, c;
	double area;
	double volume;
	cout <<"Please input length、width、height"<< endl;
	cin >> a >> b >> c;
	Box(a, b, c);
	area=box.surface(box);
	cout << "The surface area of the square is:"<<area<< endl;
	volume = box.volume(box);
	cout << "The volume of a square is:" << volume << endl;

	return 0;
}

报错截图

感激您的解答。

<无标签>
举报
xke
发帖于1年前 3回/133阅

以下是问题补充:

共有3个答案 最后回答: 1年前
构造box的时候调用了三个参数的构造函数,把成员都赋值成0,40行构造了一个临时对象,不影响box这个对象,另外一个对象的构造和析构函数只能调用一次,代表对象的生与死
--- 共有 1 条评论 ---
xke知道了 谢谢你 1年前 回复
你自己给长宽高赋值为0的。。40行是你再在调用构造函数?如果是这样的话,那这就是你错的原因
--- 共有 1 条评论 ---
xke是因为默认析构函数 不能有参数值 以及一个对象不能够第二次调用析构函数吗? 1年前 回复

你的编程想法很有意思,当在C++中定义了class, 它的方法第一个默认参数就是指向自己的指针,叫做this,而你的代码中又显式传入这个参数,这是C的用法

Box box(a, b, c);

--- 共有 1 条评论 ---
xke我正在从c往c++过度。 1年前 回复
顶部