(1)
l 程序中定义的类名是__Student______?
•l 在main函数中,定义的stud1和stud2称为__对象__________?
•l 该类中,num、name、sex称为类的_____成员属性____,其访问权限为____私有____,意味着__在一般情况下在类的外面无法访问该私有成员,类的内部可以访问_______。
•l 该类中,set_data和display称为类的__成员函数_____,其访问权限为__公有______,意味着__在类的外部和内部都可以使用该成员函数_______。
•l 在main()函数中26行后,调用stud1.display();,将会出现什么结果?请解释原因。___将会出现_
num:1
name:He
sex:f
首先stud1调用set_data函数为stud1对象初始化,然后stud1调用该对象的display成员函数显示对象的属性____
•l 请删除上面加的一行代码,在main()函数的28行后,调用stud2.sex='f';,记录提示的错误__无权访问该成员属性___?为什么会这样?__因为该成员属性为私有_____
•l 将第9行char sex;移到第10行后面,即将sex成员声明为公共数据成员,再次编译程序。请解释不会出错的原因,并对这种做法进行评价。___因为该成员属性访问权限变为公有可以在类的外部进行直接访问。_____________________
•l 将第6行private: 去掉,结果是否发生变化,请解释原因。_不会,因为在不写private的情况下系统会自动默认为private______
•l 将第10行public: 去掉,记录出现的情况,并解释原因。__类的外部将无法通过对象调用成员函数,因为类中的成员函数的访问权限都被改为私有所以造成出错_____
(2)
l 概括这种写法的特点_ 这种写法使程序让人看得更加清晰更加一目了然,也可以是自己的思路更加清晰明了________。
- l 在类定义中,公共成员在前,私有成员在后,有何好处?___避免忘记写public______
- l 成员函数的实现写在类定义之外,有何好处?__可以使类的内部没有那么冗杂,使自己看得更加清晰,降低出错率。________
- l 将第5行public: 去掉,记录出现的问题__类的外部无权访问该成员函数____,原因是__成员函数被系统默认为私有___。加上public,将程序改回正确状态。
- l 将第18行void Student::display( )写作为void display( ),即去掉Student::,结果会是_该函数没有声明____?Student::的作用是_告诉系统此函数属于Student类中的成员函数____。将程序改回正确状态。
- l 在第30行后加一句:stud1.num=3,记录出现的情况,并解释原因。_无权访问该属性因为该成员属性为私有_____
- l 去掉刚加的那一行,将第31行stud1.display();中的stud1.去掉,记录出现的情况,并解释原因。__没有实例对象无法调用该成员函数______
- l 在32行后增加cout<<sizeof(stud1)语句,看输出的结果,请做出解释_结果是28应该是数据成员所占字节的和,但又可能需要是4的倍数所以自动补齐__?
- l 初学者常将类定义后的分号丢掉,试将13行最后的分号去掉,记录出现的提示,并做出解释。___
- C:\Users\旺\Desktop\1233.cpp|15|error: new types may not be defined in a return type|
C:\Users\旺\Desktop\1233.cpp|15|note: (perhaps a semicolon is missing after the definition of `Student')|
C:\Users\旺\Desktop\1233.cpp|15|error: two or more data types in declaration of `set_data'|
C:\Users\旺\Desktop\1233.cpp|15|error: prototype for `Student Student::set_data(int, char*, char)' does not match any in class `Student'|
C:\Users\旺\Desktop\1233.cpp|7|error: candidate is: void Student::set_data(int, char*, char)|
C:\Users\旺\Desktop\1233.cpp|15|error: `Student Student::set_data(int, char*, char)' and `void Student::set_data(int, char*, char)' cannot be overloaded|
||=== Build finished: 5 errors, 0 warnings (0 minutes, 0 seconds) ===|
__因为分号是一个结束标志没有这个分号程序可能无法正确判断执行____ - l 你能想到的其他“坏”点子继续折腾吗?折腾出真知!