C++ 基础

C++ 基本兼容 C 的语法。C++ 又增加了一些自己的语法,比如说引用、函数重载这些...

C++ 关键字(C++ 98)

C++ 大概新增了三十几个关键字,C++ 总计 63 个关键字,C语言 32 个关键字。


C++ 写个 Hello World 要包一个 iostream 的头文件然后都会写一个 using namespace std; 这个 std 

#include <iostream>
using namespace std;

int main()
{
	cout << "Hello World";
}

 命名空间

命名空间其实是补 C语言 的一个坑,C语言 它没有解决命名冲突的问题,比如说定义一个变量叫 rand 又正好包了一个头文件 #include <stdlib.h> 会发现这边就报错了,这种问题叫做命名冲突。

C++ 就新增了一个关键字叫 namespace 后面可以定义一个名字,这个名字就是一个域,里面的东西就属于这个命名空间。这边在访问这个 rand 的时候它默认访问的是库里面的。

想访问自己的就要用 :: (域作用限定符)来指定命名空间域。同一个工程中允许存在多个相同名称的命名空间,编译器最后会合成同一个命名空间中。

 using namespace 用来展开命名空间,如果全局域没有就回去展开的域中去找。

 还有一种用法,单独展开常用的。

缺省参数

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

缺省还有全缺省和半缺省之分。全缺省可以都传也可以都不传还可以传一部分,但是它这边规定只能从左往右给,比如只传一个 1 不能跳过 a 去给 b。

半缺省是缺省部分参数,缺省必须从右往左。

 缺省参数不能在函数声明和定义中同时出现。分离定义时,声明给缺省参数。

函数重载

函数重载是函数的一种特殊情况,C++ 允许在同一作用域中声明几个功能类似的同名函数,这些同名函数的形参列表(参数个数或类型或顺序)必须不同。就是一个函数有多个意思。

 返回值不同无法构成重载。

 引用

引用不是定义一个新的变量,而是给已有的变量取了一个别名,它在类型和变量之间。它和它引用的变量公用同一块内存空间。

引用在定义的时候必须初始化,一个变量可以有多个引用,引用一旦引用一个实体再不能引用其它实体。

指针和引用用途基本是相似的,指针更强大,更危险,更复杂,引用相对局限一些定义时必须初始化之后不能引用其它实体,引用更安全更简单。 

内联函数

以 inline 修饰的函数叫做内联函数,编译时 C++ 编译器会在调用内联函数的地方展开,没有函数压栈的开销,内联函数提升程序运行的效率。 内联本质上是针对宏函数的优化。inline 在符合条件的情况下在调用的地方展开,在 Debug 下内联是默认不展开的。

inline 是一种以空间换时间的做法,省去调用函数额开销。所以代码很长或者有循环/递归的函数不适宜使用作为内联函数。

inline 对于编译器而言只是建议,编译器会自动优化,如果定义为inline的函数体内有递归或比较长等等,编译器优化时会忽略掉内联。

inline 不建议声明和定义分离,分离会导致链接错误。因为 inline 被展开就没有函数地址了,链接就会找不到。

 

auto 关键字(C++11) 

使用 auto 修饰的变量是具有自动存储器的局部变量。C++11 中,标准委员会赋予了 auto 全新的含义即:auto 不再是一个存储类型指示符,而是作为一个新的类型指示符来指示编译器,auto 声明的变量必须由编译器在编译时期推导而得。

auto 最常用的地方是和范围 for 结合。它会自动推导类型然后会自动依次取 a 里面的数据赋值给 e ,自动迭代,自动判断结束。

auto 还能与指针和引用结合起来使用。用 auto 声明指针类型时,用 auto 和 auto* 没有区别,但用 auto 声明引用时则必须加 &

auto 不能在同一行定义多个变量 

auto 不能作为函数的参数

auto 不能直接用来声明数组

 

  • 25
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值