第二周课程实践 阅读程序
来源:互联网 发布:js if else 简写 编辑:程序博客网 时间:2024/05/22 00:51
#include <iostream>#include <cstring>using namespace std;class Student{private: int num; char name[20]; char sex;public: void set_data(int n, char *p,char s) { num=n; strcpy(name,p); sex=s; } void display( ) { cout<<"num: "<<num<<endl; cout<<"name: " <<name<<endl; cout<<"sex: " <<sex<<endl; }};int main(){ Student stud1,stud2; stud1.set_data(1,"He",'f'); stud2.set_data(2,"She",'m'); stud1.display(); stud2.display(); return 0;}
<p style="margin-top: 0px; margin-bottom: 0px; padding-top: 0px; padding-bottom: 0px; color: rgb(85, 85, 85); font-family: 'microsoft yahei'; font-size: 15px; line-height: 35px;">问题:</p><p style="margin-top: 0px; margin-bottom: 0px; padding-top: 0px; padding-bottom: 0px; color: rgb(85, 85, 85); font-family: 'microsoft yahei'; font-size: 15px; line-height: 35px;"></p><p style="margin-top: 0px; margin-bottom: 0px; padding-top: 0px; padding-bottom: 0px; color: rgb(85, 85, 85); font-family: 'microsoft yahei'; font-size: 15px; line-height: 35px;"></p><ul style="color: rgb(85, 85, 85); font-size: 15px; line-height: 35px;"><li style="font-family: 'microsoft yahei';">程序中定义的类名是_Student.</li><li><span style="font-family:microsoft yahei;">在main</span><span style="font-family: 宋体;">函数中,定义的</span><span style="font-family: Calibri;">stud1</span><span style="font-family: 宋体;">和</span><span style="font-family: Calibri;">stud2</span><span style="font-family: 宋体;">称为</span><span style="font-family:Calibri;"> 对象</span></li><li><span style="font-family:microsoft yahei;">该类中,num</span><span style="font-family: 宋体;">、</span><span style="font-family: Calibri;">name</span><span style="font-family: 宋体;">、</span><span style="font-family: Calibri;">sex</span><span style="font-family: 宋体;">称为类的 </span><span style="font-family:Calibri;">数据成员,</span><span style="font-family: 宋体;">其访问权限为</span><span style="font-family:Calibri;"> 私有的</span><span style="font-family: 宋体;">,意味着</span><span style="font-family:Calibri;"> 数据对外隐蔽</span><span style="font-family: 宋体;">。</span></li><li><span style="font-family:microsoft yahei;">该类中,set_data</span><span style="font-family: 宋体;">和</span><span style="font-family: Calibri;">display</span><span style="font-family: 宋体;">称为类的</span><span style="font-family:Calibri;"> 成员函数</span><span style="font-family: 宋体;">,其访问权限为</span><span style="font-family:Calibri;"> 公共的</span><span style="font-family: 宋体;">,意味着</span><span style="font-family:Calibri;"> 函数在类外也可以被调用</span><span style="font-family: 宋体;">。</span></li><li style="font-family: 'microsoft yahei';">在<span style="font-family: Calibri;">main()</span><span style="font-family: 宋体;">函数</span>中26<span style="font-family: 宋体;">行</span>后,调用stud1.display();,将会出现什么结果?请解释原因。第一个name中不能显示结果。原因:此处stud.2 set_data() hanshu 尚未被调用。</li><li style="font-family: 'microsoft yahei';">请删除上面加的一行代码,在<span style="font-family: Calibri;">main()</span><span style="font-family: 宋体;">函数的</span>28<span style="font-family: 宋体;">行</span>后,调用stud2.sex='f';,记录提示的错误 char Student::sex 是私有的。<span style="font-family: 宋体;">为什么会这样?原因:私有的数据成员不能被类外函数直接调用。</span></li><li><span style="font-family:microsoft yahei;">将第9</span><span style="font-family: 宋体;">行</span><span style="font-family: Calibri;">char sex;</span><span style="font-family: 宋体;">移到第</span><span style="font-family: Calibri;">10</span><span style="font-family: 宋体;">行后面,即将</span><span style="font-family: Calibri;">sex</span><span style="font-family: 宋体;">成员声明为公共数据成员,再次编译程序。请解释不会出错的原因,并对这种做法进行评价。</span><span style="font-family:Calibri;">数据成员设置为私有的可增加数据的安全性。</span></li><li><span style="font-family:microsoft yahei;">将第</span><span style="font-family: Calibri;">6</span><span style="font-family: 宋体;">行</span><span style="font-family: Calibri;">private: </span><span style="font-family: 宋体;">去掉,结果是否发生变化,请解释原因。</span><span style="font-family:Calibri;">不变化</span></li><li><span style="font-family:microsoft yahei;">将第</span><span style="font-family: Calibri;">10</span><span style="font-family: 宋体;">行</span><span style="font-family: Calibri;">public: </span><span style="font-family: 宋体;">去掉,记录出现的情况,并解释原因。</span><span style="font-family:Calibri;">error.类对不进行声明的数据成员或函数默认为私有的,此处中函数从公共的变为私有的,因此无法进行访问。</span><pre name="code" class="cpp">
<pre name="code" class="cpp">#include <iostream> #include <cstring> using namespace std; class Student { public: void set_data(int n, char *p,char s); void display( ); private: int num; char name[20]; char sex; }; void Student::set_data(int n, char *p,char s) { num=n; strcpy(name,p); sex=s; } void Student::display( ) { cout<<"num: "<<num<<endl; cout<<"name: " <<name<<endl; cout<<"sex: " <<sex<<endl; } int main() { Student stud1,stud2; stud1.set_data(1,"He",'f'); stud2.set_data(2,"She",'m'); stud1.display(); stud2.display(); return 0; }
问题:
- 概括这种写法的特点 成员函数的实现写在类定义之外。
- 在类定义中,公共成员在前,私有成员在后,有何好处? 明确先定义原则
- 成员函数的实现写在类定义之外,有何好处?使语法明确
- 将第5行public: 去掉,记录出现的问题 出错,原因是 不声明的成员函数类类型默认为私有的。加上public,将程序改回正确状态。
- 将第18行void Student::display( )写作为void display( ),即去掉Student::,结果会是 错误?Student::的作用是 作用域。将程序改回正确状态。
- 在第30行后加一句:stud1.num=3,记录出现的情况,并解释原因 错误。num的访问权限是私有的
- 去掉刚加的那一行,将第31行stud1.display();中的stud1.去掉,记录出现的情况,并解释原因。 出错。没有明确说明对象
- 在32行后增加cout<<sizeof(stud1)语句,看输出的结果,请做出解释__出现数字28 sizeof操作符以字节形式给出了其操作数的存储大小。
- 初学者常将类定义后的分号丢掉,试将13行最后的分号去掉,记录出现的提示,并做出解释。__error。: expected ';' after class definition。
- 你能想到的其他“坏”点子继续折腾吗?折腾出真知!
0 0
- 第二周课程实践 阅读程序
- 第二周课后实践-阅读程序
- 第二周课后实践--阅读程序
- 第二周课后实践阅读程序
- 第二周--课后实践:阅读程序
- 第二周 课后实践 程序阅读
- 第二周 课后实践 阅读程序2
- 第二周 课后实践:阅读程序(1)
- 第二周 课后实践:阅读程序(2)
- 第二周课后实践:阅读程序(1)
- 第二周课后实践:阅读程序(2)
- 第二周--课后实践:阅读程序(1)
- 第二周--课后实践:阅读程序(2)
- 第二周 课后实践 程序阅读(2)
- 第二周项目1-课后实践:阅读程序
- 第二周 阅读程序
- 第二周 程序阅读
- 第二周阅读程序
- course 和heading的区别
- IOS数据持久化存储机制
- Caesar密码
- HDU 4027 Can you answer these queries(线段树 成段更新)
- 第3周项目类和对象5- 数组作数据成员
- 第二周课程实践 阅读程序
- treeTable的简单用法
- boundingRectWithSize计算高度不准确
- 好记性不如烂笔头(二)
- Java面试题集(1-50)
- 黑马程序员---java基础知识(三):面向对象
- android LayoutInflater的两种用法
- SDOI2009晨跑题解
- js 中 ==与===区别(两个等号与三个等号)