1、read是unix下的系统函数;fread(fgetc、fopen)才是C的库函数(stdio.h)。
2、C的转义字符:
“\”加数字(8进制数字)以及‘\0’加数字 都表示8进制转义字符;
‘\x’ 表示16进制转义字符;
‘\’加字符表示普通的转义字符(\n 换行等)。
3、if((x=y) && (x != 0)) x +=y是对的。
4、C++中,只有参数个数、类型以及参数是const的引用(指针)可以作为重载判断,返回值类型不可以作为重载判断。(C++Primer P208)
5、C++中运算符的优先级:*(解引用)和++优先级一样,右结合性。
参考博客:http://blog.csdn.net/nicky_zs/article/details/4053146
6、函数内定义的数组是局部变量,在函数返回后内存被释放,无法通过指针访问:
int *f() { int a[3] = {1, 2, 3}; return a;}是错误的。
7、exec((vl,v2),(v3,v4),v5,v6)等价于exec(v2,v4,v5,v6)。
8、类的常成员函数的定义:void print()const,在函数形参列表的右括号后面加上const。
9、构造函数的执行次序如下(析构函数相反):
调用基类构造函数,调用顺序按照他们的继承时声明的顺序。
调用内嵌成员对象的构造函数,调用顺序按照他们在类中声明的顺序。
派生类的构造函数体中的内容。
10、构造函数可以重载(有参数)不可以声明为虚函数(虚函数是动态绑定,是在构造函数之后);
而析构函数不可以重载(无参数),有虚函数的情况下必须声明为虚函数。
11、#pragma once避免头文件重复定义,作用类似于#ifndef,#define,#endif。
区别:#pragma once:优点:不会“撞车”,不用考虑宏名;缺点:如果某个头文件有多份拷贝,本方法 不能保证他们不被重复包含,同时不支持跨平台;
#ifndef:优点:可移植性强;缺点:不同头文件的宏名会“撞车”。