2024.03.13作业

文章详细描述了如何在C++中设计Per类,包含姓名、年龄、指针成员身高和体重,以及Stu类,包含成绩和Per类对象。还展示了构造函数、析构函数和拷贝构造函数的实现。
摘要由CSDN通过智能技术生成

要求:设计一个Per类,类中包含私有成员:姓名、年龄、指针成员身高、体重,再设计一个Stu类,类中包含私有成员:成绩、Per类对象p1,设计这两个类的构造函数、析构函数和拷贝构造函数。

#include <iostream>
#include <string>

using namespace std;

class Per
{
private:
	string name;
	int age;
	float* height;
	float* weight;

public:

	Per(string name, int age, float height, float weight)
	{
		cout << "Per(string name, int age, float height, float weight)" << endl;
		this->name = name;
		this->age = age;
		this->height = new float(height);
		this->weight = new float(weight);
	}

	~Per()
	{
		cout << "~Per()" << endl;
		delete(height);
		delete(weight);
	}

	Per(const Per& other)
	{
		cout << "Per(const Per& other)" << endl;
		this->name = other.name;
		this->age = other.age;
		this->height = new float(*(other.height));
		this->weight = new float(*(other.weight));
	}

	void show()
	{
		cout << "Per info: " << endl;
		cout << "name: " << this->name << endl;
		cout << "age: " << this->age << endl;
		cout << "height: " << *this->height << endl;
		cout << "weight: " << *this->weight << endl;
	}
};

class Stu
{
private:
	Per p1;
	int score;

public:
	Stu(string name, int age, float height, float weight, int score):p1(name, age, height, weight), score(score)
	{
		cout << "Stu(string name, int age, float height, float weight, int score)" << endl;
	}

	~Stu()
	{
		cout << "~Stu()" << endl;
	}

	Stu(const Stu& other):score(other.score), p1(other.p1)
	{
		cout << "Stu(const Stu& other)" << endl;
	}

	void show()
	{
		cout << "Stu info: " << endl;
		this->p1.show();
		cout << "score: " << this->score << endl;
	}
};

int main()
{
	cout << "p1:" << endl;
	Per p1("ghn", 20, 173, 90);
	p1.show();
	cout << "" << endl;

	cout << "p2:" << endl;
	Per p2(p1);
	p2.show();
	cout << "" << endl;

	cout << "s1:" << endl;
	Stu s1("ghn", 20, 173, 90, 60);
	s1.show();
	cout << "" << endl;

	cout << "s2:" << endl;
	Stu s2(s1);
	s2.show();
	cout << "" << endl;

	return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值