#include <iostream>
using namespace std;
//封装 Per 类
class Per
{
private:
string name; //姓名
int age; //年龄
double *height; //身高
double *weight; //体重
public:
//无参构造函数
Per()
{
cout << "Per无参构造函数" << endl;
}
//有参构造函数
Per(string name, int age, double height, double weight):name(name), age(age), height(new double(height)), weight(new double(weight))
{
cout << "Per有参构造函数" << endl;
}
//拷贝构造函数
Per(const Per &other):name(other.name), age(other.age), height(new double(*(other.height))), weight(new double(*(other.weight)))
{
cout << "Per拷贝构造函数" << endl;
}
//析构函数
~Per()
{
cout << "Per析构函数" << endl;
delete height; //手动释放指针成员 身高 申请的内存
delete weight; //手动释放指针成员 体重 申请的内存
}
};
//封装 Stu类
class Stu
{
private:
double score; //成绩
Per p1; //嵌套Per类
public:
//无参构造函数
Stu()
{
cout << "Stu无参构造函数" << endl;
}
//有参构造函数
Stu(double score, string name, int age, double height, double weight):score(score), p1(name, age, height, weight)
{
cout << "Stu有参构造函数" << endl;
}
//拷贝构造函数
Stu(const Stu &other):score(other.score), p1(other.p1)
{
cout << "Stu拷贝构造函数" << endl;
}
//析构函数
~Stu()
{
cout << "Stu析构函数" << endl;
}
};
int main()
{
// Per p2(p1); //自动调用拷贝构造函数
Stu s1; //自动调用无参构造函数
Stu s2(90.5, "李华", 20, 180, 140); //自动调用有参构造函数
Stu s3(s2); //自动调用拷贝构造函数
return 0;
}
C++day3
最新推荐文章于 2024-06-20 20:35:16 发布