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

Object C复习  C Plus

1-->bool    

1.0  BOOL  _Bool  bool  3个布尔有什么区别?

1.1  看代码,回答 n的值是:  A : 3     B:  1   

int main()
{
    int n = 3;
    bool b = n;
    n = b;
    return 0;
}

答案: B

2--> const  

2.0  const首先在C++中产生,C发现很好用,就拿到了C中。

2.1  const和宏的区别,const是一种编译器级别的关键字,它有3个特点:1 具有类型的常量  2  编译时分配空间  3 它是有作用域的。

2.2  使得const失效有很多方式,如其中一种:const cast<>。

2.3  非编译器级别的常量有: 1数字 10;  2字符串  “Hello World”;带双引号的字符串存储在常量区,是不可以被更改的。

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。

 

 

posted on 2017-01-12 14:05  zzdoit  阅读(144)  评论(0编辑  收藏  举报

导航