C++基础总结1

1、C++中命名空间的作用

  变量或数据类型重名时,可以定义不同命名空间(作用域),然后再引用变量或数据类型。

  namespace spaceA{

    int abc;

  }

  可以这样引用变量spaceA::abc,using spaceA::abc,using namespace spaceA。

2、C语言中的三目运算符返回的是值拷贝,所以不能作为左值,但是C++中的三目运算符可以作为左值,因为它返回的是引用。

3、const int a = 10,这里的a一定要初始化,int *p = (int*)&a(强制把a的地址转换为指针),如果有*p = 20这个赋值操作,此时a值不变,

  因为a是常量,int *p = (int*)&a时取的是一个临时地址temp,*p = 20这个赋值操作修改的只是这个临时地址的内容而已。

4、引用的特点

  引用一定要初始化;

  引用本质是变量的别名,是常指针;

  不在栈上开辟空间,在常量区;

  一定程度上可以取代指针。

5、引用作为函数返回值时,如果返回的是函数内部局部变量的引用,那么此时是不可以作为左值的。

  对常量引用时,需要加const修饰,如const int & a = 40 。

6、默认参数的顺序是从右到左的,int func(int a,int b,int c=10){};还有一种占位符参数(亚元),int func(int a,int){},最后的int就是占位参数,传参时必须传,但在函数体中未使用。

7、函数重载,返回值不同不构成重载,int func(int a){}与int func(int a,int){}也会构成重载,传一个参数就调用第一个,也不会构成歧义;

   但是有默认参数时,调用时就可能构成歧义,int func(int a){}与int func(int a,int b=10){},调用传一个参数时就出现了歧义,所以函数重载时不建议写默认参数。

      精准匹配实参,如果存在参数类型不匹配(如需要double,传进的是float),那么就会进行类型转换进行实参匹配(向上转型),如果找不到对应的转换类型,匹配失败。

8、函数指针

  三种函数指针形式:

      

9、类与结构体

  C++类中可以有成员函数(方法),成员的默认访问权限为private;

  C++中结构体中也可以有成员函数,唯一的区别是成员的默认访问权限为public;

  但是C语言中的结构体是不可以有成员函数的。

10、内联函数

  是为了解决C语言中的宏函数问题,因为宏函数是预处理器处理,所以没有参数的语法检查(编译器处理语法检查)。

11、面向过程与面向对象

  面向过程,是函数(方法)发生驱动;

  面向对象,是对象发生驱动,函数(方法)属于对象。

posted @ 2018-11-29 18:20  zarjen  阅读(147)  评论(0编辑  收藏  举报