四、读程序题,写出程序运行输出的结果。
1. #include
using namespace std; class Student { private :
char Name[8]; float Math; float Chinese; public :
float average;
void SetName(char *name); void SetMath(float math); void SetChinese(float ch); float GetAverage(void); };
class Student1 {
char ID[12]; public :
float total; //“标记1”
void SetTotal(float sum) {}; //“标记2” };
void main() { Student S1,S2; Student1 S3;
cout<<\cout<<\}
(a)该程序运行后,输出结果是:
the size of object S1 is: 20 the size of object S3 is:16
(b) 如果修改程序:在“标记 1”代码行前面加入 static, 在“标记 2”代码行前加入
virtual,那么输出结果是:
the size of object S1 is: 20 the size of object S3 is:16
(注:sizeof()对类体的计算如下:
9 1.空类的大小为1字节。 3. c++规定任何类型的指针大小为4个字节 。 5. 静态变量在计算时是不做考虑的。
2.int占4字节 ,char型占1字节,float型占4字节。 4. 一个虚函数也占4个字节的指针内存。 6.其他成员函数(如构造,析构函数)不纳入计算,因为成员函数是针对类体的;而sizeof()只针对实例。
2. #include
using namespace std; class A{ float x,y; public:
A(float a, float b)
{x=a;y=b;cout<<\初始化自动局部对象\\n\A(){
x=0; y=0; cout<<\初始化静态局部对象\\n\
A(float a)
{ x=a; y=0; cout<<\初始化全局对象\\n\~A(){ cout<<“调用析构函数”< }; A a0(100.0); //定义全局对象 void f(void) { cout<<\进入f()函数\\n\ A ab(10.0, 20.0); //定义局部自动对象 static A a3; //初始化局部静态对象 } void main(void) { cout<<\进入main函数\\n\f(); f(); } 2、输出结果: 初始化全局对象 进入main函数 进入f()函数 初始化自动局部对象 3. 如果在缺省目录下有文件file1.txt,文件中内容为: 1 2 3 4 5 执行下列程序后 #include 初始化静态局部对象 调用析构函数 进入f()函数 初始化自动局部对象 调用析构函数 调用析构函数 调用析构函数 10 { fstream f1; int tmp, sum=0; f1.open(\while(f1>>tmp) sum+= tmp; f1.close( ); cout< } 程序的输出是: 15 (1+2+3+4+5=15) 五、编程题 1. 掌握基类和派生类的编程设计方法。 复习范围包括:1)上机实验作业 2)课堂上所讲的 PPT 示例 3)谭版教材例子,比如 点、矩形、三角形、圆的派生类,周长、面积等成员函数。 2. 掌握文本文件和二进制文件读写的编程设计方法。 复习范围包括: 1)上机实验作业 2)课堂上所讲的PPT示例。 11