C++基础

关键字

命名空间

定义

namespace 空间名 {//成员}

使用

  • 作用域限定符(::)
  • using引入命名空间成员
  • using namespace引入命名空间
  • 命名空间可以嵌套
  • 同一个工程可以存在多个相同名称的命名空间,编译器最后会合成同一个命名空间

输入输出

  • 标准输入:cin>>
  • 标准输出:cout<<

函数重载

同一作用域中,函数名相同,参数个数或类型或顺序不同

名字修饰

  • C:在函数名前添加下划线
  • C++:重新修饰的名字包含函数名即参数类型
  • 如果函数需要用C风格来编译,在函数前加extern "C"

内联函数

以inline修饰的函数为内联函数,编译时C++编译器在调用内联函数的地方展开

特性

  • inline是空间换时间的做法,所以代码很长或者有循环递归的函数不适合使用
  • inline对编译器只是一种建议
  • inline不建议声明和定义分离,分离会导致链接错误

缺省参数

缺省参数是声明或定义函数时为函数的参数制定一个默认值,调用该函数时,如果没有实参则采用该默认值,否则使用实参

分类

  • 全缺省参数
  • 半缺省参数:必须从右往左依次给出,同时不能在声明和定义中同时出现

引用

给已定义的变量取一个别名,编译器不会为引用变量开辟内存空间,它和它的引用变量共用一块内存空间,但是在底层是有空间的,因为引用是按照指针方式来实现的

使用方法

  • 类型& 引用变量名 = 引用实体;
  • 引用类型和引用实体必须是同类型

特性

  • 引用在定义时必须初始化
  • 一个变量可以有多个引用
  • 引用只能引用一个实体

常引用

使引用变量只具有读属性

使用场景

  • 参数
  • 返回值:不能用栈上空间作为引用类型返回,返回值的生命周期必须不受函数限制
  • 引用和指针在作为参数和返回值类型效率几乎相同

引用和指针的区别

  • 引用在定义时必须初始化,指针无要求
  • 引用只能引用一个实体,指针可在任何时候指向同一类型的实体
  • 没有NULL引用,但有NULL指针
  • sizeof:引用结果为引用类型大小,指针始终是地址空间所占字节个数
  • 引用的自加即引用实体的自加,指针的自加是向后偏移一个类型大小
  • 有多级指针,无多级引用
  • 访问实体方式不同,引用编译器处理,指针需显式解引用
  • 引用使用比指针相对安全

auto

  • 早期C/C++:auto修饰的变量,是具有自动存储的局部变量
  • C++11:auto声明的变量必须有编译器在编译时期推导而得

特性

  • 使用auto定义变量必须进行初始化,编译器根据初始化表达式推导auto的实际类型
  • auto不是类型的声明,而是类型声明时的占位符,编译器在编译时会将auto替换为变量实际类型
  • 避免与C++98混淆,C++11只保留auto作为类型指示符的用法

使用场景

  • 结合指针和引用:auto声明指针类型时auto和auto*无区别,但用auto声明引用类型必须加&
  • 同一行定义多个变量:这些变量必须是相同类型,否则编译会报错,因为编译器只对第一个类型而推导出其他变量的类型
  • 范围for循环
  • lambda表达式

范围for循环

  • for(auto e : array),":"前面部分为迭代变量,后面为迭代范围
  • for循环的范围必须是确定的
  • 迭代对象要实现++和==操作

不能使用场景

  • 不能作为函数的参数
  • 不能声明数组
  • 不能定义类的非静态成员变量
  • 实例化模板时不能使用auto作为模板参数

nullptr

  • C++98(NULL):NULL是一个宏,NULL可能被定义为字面常量0,或者被定义为无类型指针(void*)的常量
  • C++11(nullptr):nullptr代表一个指针的空值常量,与(void*)0所占字节数相同,nullptr类型为nullptr_t,仅仅可以被隐式转化为指针类型,typedef decltype(nullptr) nullptr_t;为了提高代码的健壮性,空指针最好使用nullptr

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值