C++
-
更加严格的编程规范
-
面向对象的编程思维
C++新增特性
-
面向对象 类
-
继承、多态、虚函数、构造、友元、重载
-
引用
-
模板STL
-
异常
C和C++的区别
-
c++不允许出现多个 同名的全局变量
-
c 里面 const修饰的变量是可以通过指针去修改的,c++不能修改
-
c语言里面 int*p = NULL, c++ ( nullptr )
-
引用
-
数据类型+&+变量名
-
取别名
-
函数的传参,函数的返回值
-
-
函数重载
-
函数名一样,参数的个数或者类型不一样
-
-
默认参数
-
默认参数只能从右边开始设置
-
传参是从 左边开始赋值
-
注意~~~~默认参数和函数重载可能会有歧义
-
-
输入输出
- <iostream>
- cout 输出
- cin 输入
-
强制转换(类型)变量名
-
eg: (int)a 类型(变量名) eg: int(a);
-
-
内联函数
-
关键字 inline
-
要求:代码简单(5个语句), 不能有循环swich这样的语句
-
直接编译到主函数,不需要函数的跳转,要求函数的声明和定义都写在头文件
-
-
结构体
- c++结构体可以有函数,并且拥有this指针,还有三个权限 public private protected
-
名词空间
-
局部
-
全局
-
名词空间 ::
-
类域 ::
-
-
堆区空间开辟
- c malloc free 函数
-
c++ new delete 关键字
-
eg : new int[n] , delete []p
类和对象
类
- 对一类事物的抽象
- 属性(成员变量),行为(成员函数)
对象
- 抽象类的实列化
oop思想
- 抽象 封装 分类 继承 多态
构造函数
- 对象生成的时候自动调用
- 名字和类名同名
默认构造(普通构造)
拷贝构造
- 浅拷贝
- 深拷贝
移动构造
- -fno-elide-constructors 防止编译器优化 允许产生临时变量
析构函数
- 对象消亡自动调用
创建一个类系统会默认生成一些东西
- 默认构造,拷贝构造,析构,赋值符号,取地址符号
const
- const成员需要使用初始化列表进行初始化
- const成员函数,const修饰的成员函数不能存在修改成员变量的逻辑(包括引用返回)
- 非const函数可以调用const函数,const函数不能调用非const函数
static
- static修饰成员变量,不属于类,必须初始化
- static修饰的成员函数,没有对象存在也能调用,
- static修饰的成员函数,不能调用非static的成员函数,也不能访问非static的变量
- 非static修饰的成员函数,可以调用static修饰的成员函数,也可以访问static修饰的变量
- 所有对象共享一个static修饰的变量
友元函数
- 缺点 :破坏了封装,不安全,所以要慎用
- 优点:
- 效率高,一般是需要频繁访问类的成员变量时使用
- 全局函数作为类的友元函数一个类作为另外一个类的友元类
- 一个类的成员函数作为另外一个类的友元函数