基础知识点 | 0927_前后缀表达式、类的大小等基础题
前后缀表达式
-
a++表示先使用 a 的当前值,再将 a 的值加 1;++a表示先将 a 的值加 1,再使用 a 的值
-
对于内置类型,采用前后缀格式的差别不大;
但是对于用户自定义的数据类型而言,前缀格式
++a的效率更高。
-
将 * 与 ++ 作用于指针时,存在问题:将什么解引用,将什么递增
这取决于运算符的位置与优先级
前缀递增
++a、前缀递减--a和解除引用运算符的优先级相同,以从右到左的方式进行结合。后缀递增
a++、后缀递减a--的优先级相同,但比前缀运算符的优先级高,这两个运算符以从左到右的方式结合。即:
![]()
-
一个特别的例子
int arr[5] = {1, 2, 3, 4, 5}; int *p = arr; int x = *p++; // 后缀运算符优先级高于解引用,因此先执行 p++,p 指向 arr[1] // 在解引用时,由于后缀运算符的特性,所以执行 *p,且此处的 p 指向 arr[0], 所以得到 1 // 所以最后 x = 1,且 p 指向 arr[1]
取余
- 取余操作的左右两边都必须是整数
类创建对象
题目:

解答:
第一句创建一个,第二局创建6个,第三句不创建,第四句拷贝构造创建一个,第五句创建一个,合计9个。
类的大小
题目:

解答:
这里A选项描述不够准确,个人觉得不选它是存在争议的,“成员个数”,成员应该包括:静态数据成员,非静态数据成员,静态成员函数,非静态成员函数。成员函数(包括静态和非静态)和静态数据成员都是不占存储空间的。
对象大小 = 虚函数指针 + 所有非静态数据成员大小 + 因对齐而多占的字节
不论有多少个虚函数,都有一个指向虚函数表的指针,占用4字节(32位系统)。
虚函数与纯虚函数


浙公网安备 33010602011771号