/*
语言:C++ 编译环境:Visual C++6.0
类的组合:
在一个类中内嵌另一个类的对象作为数据成员,成为类的组合。该内嵌对象成
为对象成员
*/
// 例:一个学生含有多门功课的成绩。学生类Student内嵌成绩类Score
#include <iostream>
#include <string>
using namespace std;
class Score // 声明成绩类Score
{
private:
double computer; // 计算机成绩
double english; // 英语成绩
double mathematics; // 数学成绩
public:
// 类Score的构造函数声明
Score(double c=0, double e=0, double m=0);
void show();
};
// 类Score的构造函数定义
Score::Score(double c, double e, double m)
{
computer = c;
english = e;
mathematics = m;
}
void Score::show() // 显示三科成绩
{
cout<<"Score computer: "<<computer<<endl;
cout<<"Score english: "<<english<<endl;
cout<<"Score mathematics: "<<mathematics<<endl;
}
// 声明学生类Student
class Student
{
private:
Score score1;// 类Score的对象score1是类Student的对象成员
string name; // 学生姓名
public:
// 类Student的构造函数声明
Student(string name1, double s1, double s2, double s3);
void show(); // 声明输出数据函数show()
};
// 类Student的构造函数,含有初始化列表。用于对对象成员score1进行初始化
// 先执行类Score的构造函数为对象成员score1初始化,再执行类Student的构造函数对类Student的对象进行初始化
Student::Student(string name1, double s1, double s2, double s3)
:score1(s1,s2,s3)
{
name = name1;
}
void Student::show()
{
cout<<"Name: "<<name<<endl;
score1.show(); // 调用对象成员score1的show()函数显示3科成绩
}
int main()
{
// 定义类Student的对象stu1,调用stu1的构造函数,初始化对
// 象stu1
Student stu1("LiMing",87,94,77);
stu1.show(); // 调用stu1的show()函数,显示stu1的数据
return 0;
}
/* 在main中创建Student的对象时,首先调用的是类Score的构造函数,对类Student的对象成员进行初始化,而后再调用类Student的构造函数对新的Student类型的对象进行初始化
*/
C++ 学习之路(6):类的组合
最新推荐文章于 2024-06-21 16:11:17 发布