C++知识点总结(5)
1.为何静态成员函数不能调用非静态成员函数
静态成员函数可以不需要类的实例就直接使用,非静态的成员函数很可能用到一些成员变量,而成员变量的创建和初始化是在创建了类的实例时在构造函数调用的时候才进行的。 如果允许静态成员函数调用非静态的成员函数,那么就很有可能使用到未创建也未初始化的成员变量,这是完全不符合逻辑的。所以不能这么调用。
可以间接调用。即给静态成员函数传入对象实例来调用非静态成员函数和成员变量。
2.C++中的除法
除法规则:同号为正,异号为负。例如, 7/4 7/-4 -7/4 -7/-4 结果分别为 1 -1 -1 1
取模规则:除数正则正,除数负则负。例如, 7%4 7%-4 -7%4 -7%-4 3 3 -3 -3
注意。取模可以根据除法运算计算出。
当使用移位法求除法时。结果是取下整数 7>>1=3. -7>>1=-4
3.大端小端存储问题
小端:低位存低地址
大端:低位存高地址
注意:计算机寻址从第地址字节开始。例如:
short int x; char x0,x1; x=0x1122; x0=((char*)&x)[0]; //低地址单元 <span style="font-size:18px;">x1=((char*)&x)[1]; //高地址单元<strong> </strong></span>
若x0=0x11,则是大端; 若x0=0x22,则是小端......
上面的程序还可以看出,数据寻址时,用的是低位字节的地址。
4.STL问题
STL线程不安全。std::stack默认是用deque实现的。STL容器列表
std::sort封装了快速排序算法,因此是不稳定的,如果要使用稳定排序,可以用std:stable_sort