C++实验小作业①

定义一个box(盒子)类,在该类定义中包括以下数据成员和成员函数。数据成员:length(长),width(宽),height(高)。成员函数:构造函数box,设置盒子的长宽和高三个初始数据;成员函数setbox对数据成员设值;成员函数volume计算盒子的体积。
在main函数中,要求创建box对象,输入长宽高,输出盒子的体积。

题目扩张:记录创建box类的对象的总数;记录各个对象的总体积

#include<iostream>
using namespace std;

class box
{
    
    
	double length, width, height,area;

	
	public:
		static int n;
		static double total;

		box(double l,double w ,double h);
		~box();
		void volume(box& obj);


};

int box::n = 0;
double box::total = 0;

box::box(double l, double w, double h):length(l),width(w),height(h)
{
    
    
	n++;
	total += l * w * h;
}

//需要写一个析构函数
box::~box()
{
    
    
	n--;
	total -= length * width * height;
 }

void box::volume(box& obj)
{
    
    
	obj.area = (obj.length * obj.width * obj.height);
	cout <<obj.area<<endl;
}




int main()
{
    
    
	

	box obj(1,2 ,3 );
	cout << "obj的area为: ";
	obj.volume(obj);
	
	box obj1(2, 3, 4);
	cout << "obj1的area为: ";
	obj1.volume(obj1);

	box obj2(3, 4, 5);
	cout << "obj2的area为: ";
	obj2.volume(obj2);
	
	cout << "一共有 " << box::n << " 个box类的对象  " << "总体积为: " << box::total;

}

① 实现这个题目的要求代码并不困难,只是要对这一章节类与对象的定义要足够清晰,因为有时候定义过多,对导致自己记不清,或者记忆混淆,例如:在调用对象的函数时,常常习惯于以前直接用函数名的方式来调用,但是在类与对象中,访问函数还是要经过特定的对象,应为没有对象,函数就没有作用对象了。我应该理解其背后的工作原理,与其结合来理解知识点,这样在使用时就清晰很多了。
② 但是在增加了记录box类对象的个数和对象的总体积的静态成员后,编程过程中会经常报错,最重要的是声明静态成员变量的时候,必须要在类后声明一次变量,还可以对其进行初始化。
为了可以记录对象个数和总面积,我一开始打算用一个专门的函数来记录,后来发现了运用类的构造函数,这样实现起来就更加方便了,在构造对象是使得静态数据成员自增。
③ 函数运行之后,发现在对象的析构过程中,之前创建的两个静态数据成员并没有被释放,这是因为静态数据成员并不属于某一个类,本质上来说,静态数据成员是全局变量,因此,需要为该类自定义一个析构函数。

Guess you like

Origin blog.csdn.net/qq_46167911/article/details/105642685