有必要的c++(强制++对齐11符号)(108)

强制转换

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错误,,同样或者自己添加类限定。。

// //