Object C复习 C Plushtml
1-->bool 程序员
1.0 BOOL _Bool bool 3个布尔有什么区别?函数
1.1 看代码,回答 n的值是: A : 3 B: 1 spa
int main() { int n = 3; bool b = n; n = b; return 0; }
答案: B3d
2--> const 指针
2.0 const首先在C++中产生,C发现很好用,就拿到了C中。调试
2.1 const和宏的区别,const是一种编译器级别的关键字,它有3个特色:1 具备类型的常量 2 编译时分配空间 3 它是有做用域的。code
2.2 使得const失效有不少方式,如其中一种:const cast<>。htm
2.3 非编译器级别的常量有: 1数字 10; 2字符串 “Hello World”;带双引号的字符串存储在常量区,是不能够被更改的。blog
2.4 const修饰的常量能够称为伪常量。使用#define定义出来的常量是真常量。
2.5 const是带有类型检测的,好比char*转int*的时候,使用define的常量,直接替换,而const修饰的常量会有提示。
2.6 const在编译时会分配空间,更方便调试。
2.7 const它是拥有做用域的,#define是全局的。
2.8 虽然define能全面代替const,但const是给程序员用的,它更易于调试,比较透明,更易于问题的定位。
3-->enum定义常量 复习
3.0 少用define,能够用enum代替。
3.1 enum和const有哪些不一样: 1 enum定义出来的是真常量,const修饰的是伪常量。 2 const须要空间的分配,enum不须要分配空间,直接就是一个常数。 3 但const能作到许多enum不能作的如:一个const的指针,enum就无能为力。
4-->域做用符:: 复习
4.0 域做用符的做用: 1 命名空间 2 类 3 全局(当域做用符前面什么也没有时)
5-->new 和 delete 运算符 复习
5.0 new delete 它们是运算符,不是函数。
5.1 malloc() 和 free() 与 new delete 之间区别:malloc()不会调用构造函数,free()也不会调用析构函数。
5.2 new 和 delete 是须要成对出现的。
6-->函数重载 复习
6.0 返回值可以构成重载? A: 对。 B: 错。 答案B。 重载和函数的返回值没有关系。
6.1 1参数类型不一样能构成重载,2参数的个数不一样也能构成重载,3在类内部,非const版本成员函数和const版本的成员函数能构成重载。
6.2 只要函数命名粉碎后不重名,就能达到重载的目的。
6.3 再次说明: 重载和函数的返回值没有关系。
6.4 二义性的问题:类型或者被隐匿转换,或者被强制转换,更或者被提高转换,会使得函数参数和一个以上的重载的函数匹配。
6.5 默认形参值: 头文件里面初始给出一个值,注意要多个默认形参赋值,要注意顺序,从右往左。
7-->引用 复习
7.0 引用可代替指针。
7.1 引用一旦肯定,就不会再被更改。
7.2 回答:看下面代码,选择答案 A:100 B: 50 。 答案:B
int main() { int n = 100; int & rn = n; int o = 50; rn = o; //此时n = ? return 0; }
7.3 引用至关于一个变量的别名
7.4 引用 在传参时,至关于传自身。
7.5 再看一个错误的引用的用法,在函数的栈内部出现的变量,出栈后就不存在了,返回它的引用是有错误的。
7.6 返回一个引用,必定要是生命同期不会被结束的,才是正确的。
8-->类型转换 复习
8.0 在C++中,如int()的C风格类型转换是强制转换,C++中有本身的一套转换风格。
8.1 1 static_cast<> 2 const_cast<> 3 reinterpret_cast<> 4 dynamic_cast<>
9-->inline 内联请求 复习
9.0 inline能够代替define的功能。
9.1 宏是必定会展开的,但inline只是对编译器发出一个请求,编译器不必定就实现inline展开。
9.2 转到反汇编,查看inline是否生效。关键看申请inline的函数有没有call,inline生效则展开来,没有call。