强制转换
reinterpret_cast任意类型转换,包括指针和整数的转换
staticcast和dynamiccast对类型转换比较苛刻,必须是指针到指针或者实例到实例
dynamic__cast对虚函数有要求才能体现,所以注意转换是否对的,如果错误运行会错误,编译无错。
11新特性
default编译器自动添加默认构建函数
delete编译器删除默认构建函数
class B : A 测试发现默认是protected继承
逻辑符号
!和~ 一个是逻辑符一个是按位符。。逻辑符号后要么1要么0
按位与:取最小
按位或:取平均
计算x二进制包含1的个数:
count = 0;
while(x) {
count++;
x=x&(x-1);
}
return count;
内存对齐
8字节的边界
4字节的舍入
所以类和结构体对成员的构建顺序很是要求。
方法:先比对最大的类型。其大小必定是它的倍数,再按次数填入数据。
自加和加自
(pp++)+=2;就是(pp)+=2;
先使用pp switch(p++)就是switch(p)
多重继承和虚继承
多重继承只需要考虑一个报错“ambiguous”
因为a; b; c>b,>a;如果有重复函数名无法识别,或者自己添加类限定。
当多重继承是这种关系时a; b>a; c>a,>b;问题就是already
所以这时候要用虚继承所谓的虚继承也只是多了个虚化表而已,只要保证有一个东东就行!!虚化谁你自己看着办。。两次或者一次虚化都可以办到。
这之后还有个ambiguous错误,,同样或者自己添加类限定。。