1.编译器为类自动合成构造函数有以下情况:
- 有class1,class2,2中有1类型成员而2没有构造函数但1有,此时编译器会自动生成。
- 在继承中,基类定义构造函数,而派生类没有定义,派生类会自动生成
- 在虚拟继承中自动生成构造函数用来填写偏移量表格地址。
- 类中有虚函数,自动合成构造函数来初始化虚表
2.下面结构体的大小是_____:
struct s1 {
char ch, *ptr;
union {
short a, b;
unsigned int c:2, d:1;
}
struct s1 *next;
};
- ch 一个字节 ,但要字节对齐,所以是4个字节
- *ptr 指针 在32为机器侠,是4个字节
- union 取最长的变量的字节数, 是4个字节
- *next 也是指针, 4个字节
加起来是16个字节。
3.strlen()返回的是字符串的实际长度,跟内存占用没关系,sizeof才是计算所在空间大小的,以字节为单位
4.fread(pt,size,n,fp)指从fp指定的文件中读取长度为size的n个数据项,存入pt所指向的内存区,但由于这里是循环读取,每次循环读取一个,所以n=1
5."Computer Department"字符串是以隐含字符\0为结束符的字符数组,故所占的空间为:18个字母+空格空串+隐含字符\0=20