const的五种用法
1、const修饰的变量
2、指针常量 *const
3、常量指针 const *
4、常量数据成员
5、常量成员函数
const和#define相比的优点
1、const常量有数据类型,编译器可以对其进行类型进行安全检查
2、const常量可以进行调试
3、const可以节省空间,避免不必要的内存分配,提高运行效率。
静态static的五种用法
1、静态全局变量
2、静态局部变量
3、静态全局函数
4、静态数据成员
5、静态成员函数
普通全局变量和静态static全局变量的区别
1、生存周期相同,内存都是在静态全局区
2、普通的全局变量没有static修饰,静态全局变量有static修饰
3、作用域(即作用的范围)不同,普通全局变量的作用域为项目作用域,静态全局变量为文件作用域。
运算符的优先级
单目>双目>三目
优先级从高到低依次为:
算术运算符、右移左移运算符、关系运算符、位运算符、逻辑运算符、条件运算符、赋值运算符、逗号
前置++返回到是this,后置++返回的是值拷贝。所有后置优先级高于前置,但是前置的效率比后置高。
位运算的底层都是以二进制的补码进行运算
位运算名 | 具体 | 原则和公式 |
---|---|---|
按位于 | a&b | 同1为1,否则为0 |
按位或 | a丨b | 有1为1,否则为0 |
按位异或 | a^b | 不同为1,否则为0,可以不使用第三方变量交换两值 |
按位非 | ~a | 全部取反,包括符号位。公式:~x=-(x+1) |
左移 | a<<n | a左移n位,右边补0,公式:a*(2的n次方) |
右移 | a>>n | a右移n位,左边补符号位。公式:当a为正数时:2的n次方分之a(a/(2^n))。为负时:2的n次方分之a-1 |
浅拷贝和深拷贝
浅拷贝只是复制指向某个对象的指针,而不是复制对象本身,新旧对象共用一段内存。但是深拷贝会另外创建一个一模一样的对象,新对象和原对象不共享内存,修改新对象不会改到原来的对象。
TCP和UDP浅显理解
1、TCP面向 连接,UDP是无连接的,即发送数据之前不需要建立连接。
2、TCP提供可靠的服务,保证可靠的交付。UDP尽最大努力交付,不保证可靠。
3、TCP面向字节流,实际上是TCP把数据看成一串无结构的字节流;UDP是面向报文的。
4、TCP支持一对一,点对点。UDP支持一对一,一对多,多对多和多对一点交互通信。