PoEduo - C++阶段班【Po学校】-08复习C Plus Plus- 课堂笔记

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。

相关文章
相关标签/搜索