C++:
- inline && virtual : inline属于编译时刻展开,而virtual是运行时刻绑定。构造函数和析构函数都可以是inline的;但只有析构函数可以是virtual的。但析构函数和一般函数一样不能是 inline virtual类型,我们的编译器不能既给我们做到inline带来的速度又提供virtal带来的运行时刻区别。鱼与熊掌不能兼得.
- 构造函数 && 拷贝构造函数:构造函数是一种特殊的函数,拷贝构造函数是一种特殊的构造函数。拷贝构造函数的第一个参数必须为 type X& 或者 type const X& 。要么不存在其他参数,如果存在其他参数,其他参数必须有默认值。
- 构造函数的特殊性:没有函数名,没有返回值,编译器可以默认创建。具体体现:
- explicit关键字:显式调用构造函数
- 构造函数调用的两种方式:1:调用默认构造函数 2:按值构造对象。初始化列表中对构造函数的调用采用方式2,所以比普通的赋值操作效率要高!
- 构造函数的特殊性:没有函数名,没有返回值,编译器可以默认创建。具体体现:
- fstream:如果使用输入流“>>”会过滤掉文件里的空格,回车以及所有的格式符号。如果使用成员函数“read”会整个读入缓冲区。
- const: 如果 const 出现在 * 左边,则指针指向的内容为常量;如果 const 出现在 * 右边,则指针自身为常量;如果 const 出现在 * 两边,则两者都为常量。
- 抽象类:含有纯虚函数的类,它不能实例化对象(纯虚函数的意义在于让c++知道该函数并无意义,它的作用只是为派生类进行虚函数重载保留位置)。其派生类可以不重载抽象类的纯虚函数从而仍是抽象类。纯虚函数可以有具体的实现,只是没有任何意义。
- Static: 1 变量位于全局存储区中,下一次调用的时候可以保持原来的赋值,这是与栈变量堆变量不同的。2 变量用static告知编译器,自己仅仅在变量的作用范围内可见,这是与全局变量不同的。