枚举类型 C++中对枚举的加强: 1.C++不允许非枚举值赋值给枚举类型,不允许其他枚举类型的值赋值给当前枚举类型,而C语言中是允许的. 2.枚举值具有外层作用域,容易造成名字冲突. 3.不同类型的枚举值可以直接比较. 代码实现: C++中的强枚举类型: 1.强枚举类型不具有外层作用域. 2.C++强枚举不允许其他类型的值赋值给当前枚举变量. 3.C++强枚举类型不允许不同类型枚举值之间的比较. 代码实现:…
内联函数以及函数参数 内联函数 使用 inline 关键字必须和函数体放在一起. 内联函数具有内部链接属性. 内联函数会被编译器在编译阶段替换到函数调用的地方. 可以把内联函数定义写到头文件中,多个cpp包含时不会引起重定义. 如果出现连接错误: 使用第三方库,没有将其库代码配置到项目,所以导致编译器找不到实现(变量定义,函数定义) 本身自己只写了声明,根本没有定义实现. 变量本身.函数本身具有内部链接属性,此函数或者变量只能在当前文件访问. 函数参数 函数参数的作用 兼容C语言中不规范的语法…
1.C语言动态内存管理的缺点: 1.malloc对象的大小需要自己计算. 2.需要手动转换指针类型. 3.C++的对象不适合使用malloc和free. 2.C++中new/delete基本使用: 3.其他类型.指针类型动态开辟空间   4.动态数组创建及释放 5.注意事项 1.new必须和delete共用,不能用new/free也不能用malloc/delete,不能混用. 2.如果创建的是动态数组,那么必须使用delete[]来释放动态数组. 3.New/Delete工作原理: 如果New创…
引用 引用的好处: 1.引用的好处 C++使用结构体,不需要再使用 typedef. 2.值传递是将实参进行拷贝,赋值给形参,如果对象比较大,每次拷贝效率比较低,并且函数内部无法修改外部变量的值,能力较弱.若使用地址传递无论数据大小,每次只需要传递指针大小的数据,传递效率较高,函数具有修改外部变量的能力(const 指针).而引用即可以有值传递简洁的语法,又可以兼顾指针传递的效率. 3.如果要使用常量引用,编译器会给常量分配内存,并且让新创建的对象引用该内存. 4.引用的机制: 引用是通过指针来…
 Const Const在C语言和C++语言中连接属性不一样,C语言默认是外部连接,如果需要内部连接,需要显示写上static.而在C++中默认是内部连接,如果希望其编程外部变量,需要显示写上extern. 在内存角度C语言中的const是一个只读变量,会分配内存.而在C++中的const有两种情况,第一种情况是全局变量取地址.extern,此时会分配内存,否则不分配内存,使用的时候直接替换到调用的地方:第二种情况是局部变量默认进行常量优化,例如 const int a = 10; 会将10直接…
类型转换:主要进行指针类型转换,因为在C++中,不同类型指针不允许隐式转换,任何一个程序中如果出现了大量的类型转换,说明该程序不是太好的程序. 注意事项: 不同类型指针不允许隐式转换: void* 类型指针不允许直接赋值给其他类型指针,需要进行强制类型转换: 其他类型指针可以赋值给 void* 类型变量:…
NAMESPACE语法 namespace主要解决了命名冲突的问题,语法如下 Namespace注意事项: namespace中可以定义常量.变量.函数.结构体.枚举.类等. namespace 只能在全局定义. namespace 支持嵌套定义,如下图所示: 4.namespace是开放的,可以随时添加新成员. 5.namespace 关键字可以为已有空间名字增加别名,例如 6.无名命名空间意味着命名空间中的符号只能在本文件中访问,相当于给符号增加了 static 修饰,该命名空间中的变量只能…
函数重载 1.函数重载语法 1.同一个作用域(全局作用域.命名空间作用域.类作用域) 2.参数个数不同 3.参数类型不同 4.参数顺序不同 代码实现: 当函数名字一样的时候,通过参数类型.参数个数.参数顺序来匹配函数调用. 函数发生调用,首先编译器会进行严格类型匹配  . 编译器对参数进行隐式类型转换,转换成功,则可进行函数调用. 2.函数的返回值不能作为重载条件 3.函数重载碰到默认参数 当重载的函数具有默认值的时候,避免二义性.…
1.匿名函数基础语法.调用.保存 1.auto lambda类型 2.函数指针来保存注意点:[]只能为空,不能写东西 3.std::function来保存 2.匿名函数捕捉外部变量(值方式.引用方式) 1.[]表示捕获外部变量,如果在匿名函数内部想要使用外部定义的变量,必须要捕获,捕获有两种方式,一中是引用捕获,一种是值捕获 2.引用捕获:& 表示以引用的方式捕获所有外部变量 [&a, &b] 表示捕获指定变量 3.值的方式捕获:默认以值方式捕获的变量具有connst性,[=]号按…
For循环以及AUTO类型 For代码实现: AUTO类型: 1.auto自动类型推导,省事. 2.auto主要在模板中用的多,模板的类型比较长,使用auto可以简化代码. 3.不要轻易使用,我们在编写代码的时候,需要清楚的知道数据的类型. 代码实现: auto推导数据类型:(打印typeid().name可以显示具体数据类型的名字) auto创建变量并赋值: auto推导数组: 使用auto进行for循环: 注意事项: 1.auto不能定义数组: 2.auto不能作为函数参数,但是可以作为函数…