虚函数就不能内联,题目错了
方法重写的时候,子类的访问权限要大于父类的
int a = b = c = 10这样bc都没定义,a=b=c这样赋值是没问题的。所以不要图方便,乖乖int a; int b;
数字不超过3位,字符不超过1位
++操作符只能用于变量,因为a++返回的是5,所以不能对5做++操作
常量成员和引用成员必须要初始化,问题就在这static成员
static成员是不允许在类内初始化的,除了const,那么static const 成员是不是在初始化列表中呢?
答案是NO
一是static属于类,它在未实例化的时候就已经存在了,而构造函数的初始化列表嘞,只有在实例化的时候才执行。
二是static成员不属于对象。我们在调用构造函数自然是创建对象,一个跟对象没直接关系的成员要它做什么呢
static_cast支持向上和向下,即使向下不安全,不能用于无关类的转换。但是可以用void*做媒介
注意:
符号位:0代表正数,1代表负数。
计算机中加减运算均使用补码。
分析:
int
int 为有符号整数,以 32 位存储,因此1的二进制表示为:
1
00000000 00000000 00000000 00000001
1<<31
将所有数整体向左移31位,溢出的数直接舍去,右侧补0。即:
1
10000000 00000000 00000000 00000000
()>>31
将所有数整体向右移31位,左侧补符号位数字。即:
1
11111111 11111111 11111111 11111111
1^()
异或运算,得
1
11111111 11111111 11111111 11111110
此时符号位为1,代表次数为负数。因为计算机中加减运算使用的都是补码,所以不能直接将补码形式二进制数通过除二取余法转换为十进制数。要先将补码转换为原码,再通过除二取余法转换为十进制数。
负数补码转换为原码步骤:
补码-1,得反码:
1
11111111 11111111 11111111 11111101
反码除符号位其余位取反,得原码:
1
10000000 00000000 00000000 00000010
最后,将原码使用除二取余法转换为十进制数,为-2。
故选C。