关于其他的基本和c语言一致不在赘述 可以直接看我的c语言专栏 直接从类和对象开始
https://blog.csdn.net/viafcccy/column/info/31028
类是一类事物共有的特性 类似于 汽车有速度 颜色 品牌 等属性 类也是对象的抽象表现
而对象只是 类的具体表现 例如 汽车这个类 里有一辆这样一辆车(100km/h 白色 奔驰 等)
类其实就是结构体 只不过是加上了函数的结构体 并且在结构体上 将结构体进一步的模块化
下面直接看一个例子
- 设计一个类,成员变量包括学号、姓名、性别、年龄、成绩;
- 完成以下:
- 并输出所有学生的信息和平均成绩;
- 判断每个学生是否有不及格的课程;
- 计算每个学生的平均成绩;
- 由键盘分别输入n个学生的学号、姓名、性别、年龄、成绩;
对于这个例子首先 我们将单个学生建立一个类 student (里面可以有将学生信息输出的函数 修改的函数 判断学生是否及格的函数 输入学生信息的函数)
而我们可以再把所有学生放到一个类中 这个类包含(学生排名 学生查找 等等)在这个里面每个学生都是一个数据 然后使用链表将所有的学生链接起来
#include<iostream>
#include<string>
#include<iomanip> //控制输出格式
using namespace std;
int num; //总学生人数
class student {
friend class studentMessage;
private:
string ID;
string name;
int standard;
double score[5]; //1-4代表math、English、OPP和总成绩 ,0号单元空出
student * next;
public:
student();
void display(); //打印成绩
};
student::student()
{
cout<<"请输入学生学号 : ";cin>>ID;
cout<<"请输入学生姓名 : ";cin>>name;
cout<<"请输入学生的数学、英语和物理成绩 : "<<endl;
int a,b,c;
cin>>a;
while(a<0||a>100)
{
cout<<"输入成绩有误,请重新输入: "<<endl;
cin>>a;
}
cin>>b;
while(b<0||b>100)
{
cout<<"输入成绩有误,请重新输入: "<<endl;
cin>>b;
}
cin>>c;
while(c<0||c>100)
{
cout<<"输入成绩有误,请重新输入: "<<endl;
cin>>c;
}
score[1]=a;
score[2]=b;
score[3]=c;
score[4]=(a+b+c)/3;
if(a>=60 && b>=60 && c>=60)
standard = 1;
else
standard = 0;
next=NULL;
}
void student::display()
{
cout<<" "<<setw(3)<<ID<<" "<<setw(3)<<name<<" ";
for (int i=1;i<=4;i++)
{
cout<<setw(3)<<score[i]<<" ";
}
if(standard == 1)
cout<<setw(3)<<"全科及格"<<" ";
else
cout<<setw(3)<<"存在挂科"<<" ";
cout<<endl;
}
class studentMessage{
private:
student * first;
student * last;
public:
studentMessage();
void add();
void showAll();
};
studentMessage::studentMessage()
{
first=NULL;
last=NULL;
num=0;
}
void studentMessage::add()
{
//t p add执行一遍被释放 只有 first last才会留下
student * t =new student; //自动调取构造函数
student *p = first;//用于记录原先位置
//第二个开始执行
while(p){
if(p->ID==t->ID)
{
cout<<"\n学号输入错误或该学生成绩已经存在!(如需修改,请先删除再重新录入)"<<endl;
return;
}
p=p->next;
}
num++;
//判断是否是第一个数据
if(first==NULL)
{
first=last=t;
}
//如果不是第一个 指针后移
else
{
last->next=t;
last=last->next;
}
//最终使first 和 last 始终指向头尾
}
void studentMessage::showAll()
{
cout << "******************************成绩分析********************************"<< endl;
cout << " 学号 姓名 数学 英语 物理 平均分 挂科情况" << endl;
student *t = first;
while(t){
t->display();
t=t->next;
}
}
int main()
{
char select;
cout<<"是否开始输入?y/n"<<endl;
cin>>select;
studentMessage stuM;
while(select == 'y')
{
stuM.add();
cout<<"是否继续输入?y/n"<<endl;
cin>>select;
}
stuM.showAll();
return 0;
}
相信看完这个例子 基本对于类就有了了解 更多基础的概念和用法可以看