c++的一段程序,没看懂类是怎么定义的?而且类中的这些个return是做什么的?请详细的分析~

#include<iostream>usingnamespacestd;#include<string>classStudent{public:Student(){sno... #include <iostream>
using namespace std;
#include <string>
class Student
{public:
Student(){ sno=""; name=""; score=0; }
Student(string s, string n, int c): sno(s), name(n), score(c){}
string GetSno(){ return sno; }
string GetName(){ return name; }
int GetScore(){ return score; }
void SetSno(string s){ sno = s; }
void SetName(string n){ name = n; }
void SetScore(int s){ score = s; }
void Show()
{ cout<<"Sno is: "<<sno<<endl;
cout<<"Name is: "<<name<<endl;
cout<<"Score is: "<<score<<endl<<endl;
}
private:
string sno;
string name;
int score;
};
int main()
{
Student student[5] = {Student("1001", "ZhangSan", 75),
Student("1002", "LiSi", 81),
Student("1003", "WangWu", 90),
Student("1004", "ZhaoLiu", 71),
Student("1005", "HouQi", 88) };
for(int i = 0; i < 5; i++)
if(student[i].GetScore()>80)
student[i].Show();
return 0;
}
没看懂类是怎么定义的?为什么定义了两个构造函数?而且类中的这些个return是做什么的?。。。。。。请详细的分析~
展开
 我来答
cdyzxy
2019-02-13 · TA获得超过2.1万个赞
知道大有可为答主
回答量:1.4万
采纳率:85%
帮助的人:3778万
展开全部
class Student { //类是一种比结构更复杂的结构,具备自己的函数可供调用
public: // public指可以被外部调用的函数或变量
  Student(){ sno=""; name=""; score=0; } //构造函数,不带任何参数时初始化各私有变量
  Student(string s, string n, int c): sno(s), name(n), score(c){}
    //构造函数,当带3个参数时的构造函数,分别用它们的内容初始化私有变量
  string GetSno(){ return sno; } //外部通过这个函数读取sno的内容
  string GetName(){ return name; } //外部通过这个函数读取name的内容
  int GetScore(){ return score; } //外部通过这个函数读取score的内容
  void SetSno(string s){ sno = s; } //外部通过这个函数设置sno的内容
  void SetName(string n){ name = n; } //外部通过这个函数设置name的内容
  void SetScore(int s){ score = s; } //外部通过这个函数设置score的内容
  void Show() { //外部通过这个显示私有变量的内容
    cout<<"Sno is: "<<sno<<endl;
    cout<<"Name is: "<<name<<endl;
    cout<<"Score is: "<<score<<endl<<endl;
  }
private: //私有函数或变量
  string sno; 
  string name; 
  int score; 
};

假设定义:Student a;

私有函数和变量只能在自己类中的函数使用,外部想读写这些值,需要借助putlic类型的函数来进行,public类型的函数和变量可以直接被外部调用。假设上述3个变量被定义成public的,那么给name赋值就可以a.name="小明"; 但由于是私有的,只好写a.SetName("小明");读取也是这样。

构造函数:当我写Student a;时,将会执行第1个构造函数,因为它没有参数,类就用默认的值初始化私有变量;写Student a("1101","小明",85);时,因为参数类型符合第2个构造函数,因此会被调用来初始化各参数。

追问
问题①:  Student(string s, string n, int c): sno(s), name(n), score(c){}这个构造函数中间为什么有个冒号:?
问题②比方说:“string GetSno(){ return sno; } //外部通过这个函数读取sno的内容”。那么外部是怎么通过这个函数读取sno的内容的呢
追答
sno(s)调用sno的构造函数来实现初始化,后面的一样
外部:
void main() { Student a; string s;
...
a.SetSno("1年级1班10号"); s=a.GetSno(); cout<<s<<endl; cout<<a.GetSno()<<endl;
}
前端工程狮
2019-02-13 · 知道合伙人互联网行家
前端工程狮
知道合伙人互联网行家
采纳数:6 获赞数:6
五年前端经验,客如云高级前端工程师。

向TA提问 私信TA
展开全部
1:多个构造函数是重载构造函数。构造的时候既可以不传参数使用默认值,也可以传参数使用参数初始化成员变量。
2:至于函数中的return基本没逻辑就是返回成员变量的值。
追问
请问把成员变量的值返回到哪里?
追答
返回到调用那里
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
pieryon
2019-02-14 · 知道合伙人数码行家
pieryon
知道合伙人数码行家
采纳数:14410 获赞数:166873
获取软件设计师高级职称 万达金融最佳创新奖

向TA提问 私信TA
展开全部
两个构造函数,一个是无参的,一个是有参数的。
return 是带回返回值的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
尘雨洛烟
2019-02-14 · TA获得超过6203个赞
知道大有可为答主
回答量:3967
采纳率:79%
帮助的人:1023万
展开全部
这是一个基本的类定义,里面包含了属性和方法,根据类的封装性,属性一般是私有的,即外面无法访问,如Student类中的学号sno,姓名name和成绩score,但在外面要给她们赋值,此时可以通过构造函数,也可以通过Set函数,同理,要获取它们的值,也应该通过函数,这就是类中定义的各种Get函数,建议看看面向对象的基础知识
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式