1、深拷贝和浅拷贝
编译系统在我们没有自己定义拷贝构造函数时,会在拷贝对象时调用默认拷贝构造函数,进行的是浅拷贝
在对含有指针成员的对象进行拷贝时,必须要自己定义拷贝构造函数,使拷贝后的对象指针成员有自己的内存空间,即进行深拷贝
2、bool,int,float,指针类型与0进行比较
bool A;
if(A);
int A;
if(A==0)
float A;
if(abs(A)<=EPSILON)
if(abs(A)>EPSILON) //其中EPSILON为精度
int *A;
if(A==NULL)
3、不使用中间变量实现两个变量的转换
//1) 算术运算
int a,b;
a=10;b=12;
a=b-a; //a=2;b=12
b=b-a; //a=2;b=10
a=b+a; //a=10;b=10
//2) 指针地址操作
int *a,*b; //假设
*a=new int(10);
*b=new int(20); //&a=0x00001000h,&b=0x00001200h
a=(int*)(b-a); //&a=0x00000200h,&b=0x00001200h
b=(int*)(b-a); //&a=0x00000200h,&b=0x00001000h
a=(int*)(b+int(a)); //&a=0x00001200h,&b=0x00001000h
//3) 位运算
int a=10,b=12; //a=1010^b=1100;
a=a^b; //a=0110^b=1100;
b=a^b; //a=0110^b=1010;
a=a^b; //a=1100=12;b=1010;
//4) 栈实现。
int exchange(int x,int y)
{
stack S;
push(S,x);
push(S,y);
x=pop(S);
y=pop(S);
}
4、用宏定义实现 MIN,返回较小值
#define MIN(A,B) ((A) <= (B)? (A) : (B))
5、常见编码格式,及乱码的原因
常见字符集编码格式名称:
ASCII编码、GB2312编码、GBK编码、GB18030编码、UTF-8编码、BIG5编码、Unicode编码
一般可以分成五种类型:
- 第一类是文本/文档文件乱码,这一般是由于源文件编码,与Windows使用的编码不通用造成的;
- 第二类是网页乱码,形成原因与第一类乱码类似;
- 第三类是Windows系统界面乱码,即中文Windows的菜单、桌面、提示框等显示乱码,主要是Windows注册表中有关字体的部分设置不当引起的;
- 第四类是应用程序的界面乱码,即各种应用程序(包括游戏)本来显示中文的地方出现乱码,形成原因比较复杂,有第二类的乱码原因,也可能是软件用到的中文链接库,被英文链接库覆盖造成的;
- 第五类是邮件乱码,形成原因也极其复杂