C++入门学习总结

C++在C的基础上增加了面向对象的编程思想,并且增加了许多有用的库,也对C语言的一些方面做了一些添加和优化

#include<iostream>

using namespace std;
int main()
{
	cout << "hello world" << endl;
	return 0;
}

这是C++的第一个程序

由于我们需要的函数和变量的大量存在的,我们在命名的时候就会遇到名字重复的情况,使用命名空间可以使标识符本地化,减少命名冲突。

首先学习的是命名空间:需要使用到namespace关键字,后面跟命名空间的名字,然后接一对{}即可,{}中即为命名空间的成员。

在这里插入图片描述
命名空间中的变量不能被直接使用,平常使用的变量中,默认先在局部作用域和全局作用域中搜索变量,想要使用命名空间域需要使用命名空间名称加上::操作来使用

但是这种使用方法会很麻烦
我们可以使using来把命名空间中的某个成员引入,
也可以把命名空间名称引入
在这里插入图片描述
也可以using nilv::b;
把变量b引入

我们第一个程序中的std是C++标准库的命名空间名,C++将标准库的定义实现都放到这个命名空间中

输入输出

我们在使用cout/cin输入输出函数是,要先把标准的命名空间引入

C++中的输入输出函数包含在头文件iostream中,

cout和cin是全局的流对象,endl是特殊的C++符号,表示换行输出,他们都包含在包含头文件中。
<<是流插入运算符,>>是流提取运算符。
使用C++输入输出更方便,不需要像printf/scanf输入输出时那样,需要手动控制格式。
C++的输入输出可以自动识别变量类型

缺省参数
函数传参时,我们可以选择省去这个参数的值
在这里插入图片描述
在这里插入图片描述
如上图

半缺省参数指的是不完全省略的参数
缺省参数的要求:

  1. 半缺省参数必须从右往左依次来给出,不能间隔着给
  2. 缺省参数不能在函数声明和定义中同时出现
  3. 缺省值必须是常量或者全局变量

定义缺省参数时,在声明中为参数赋值,因为在程序编译时,是先处理声明的。

函数重载

是函数的一种特殊情况,C++允许在同一作用域中声明几个功能类似的同名函数,这些同名函数的形参列表(参数个数 或 类型 或 类型顺序)不同,常用来处理实现功能类似数据类型不同的问题

编译链接时,这种同名函数的情况会得到处理,会根据参数列表来进行命名,命名规则由编译器决定。

  1. 实际项目通常是由多个头文件和多个源文件构成,而通过C语言阶段学习的编译链接,我们可以知道,【当前a.cpp中调用了b.cpp中定义的Add函数时】,编译后链接前,a.o的目标文件中没有Add的函数地址,因为Add是在b.cpp中定义的,所以Add的地址在b.o中。那么怎么办呢?
  2. 所以链接阶段就是专门处理这种问题,链接器看到a.o调用Add,但是没有Add的地址,就会到b.o的符号表中找Add的地址,然后链接到一起。
  3. 那么链接时,面对Add函数,链接接器会使用哪个名字去找呢?这里每个编译器都有自己的函数名修饰规则。
  4. 由于Windows下vs的修饰规则过于复杂,而Linux下g++的修饰规则简单易懂,下面我们使用了g++演示了这个修饰后的名字。
  5. 通过下面我们可以看出gcc的函数修饰后名字不变。而g++的函数修饰后变成【_Z+函数长度+函数名+类型首字母】

引用

引用操作符 &(也是按位与操作符,这里就是操作符重载)
就是给已存在的变量取一个别名,编译器不会开辟空间、

类型 & 引用的变量(对象名)=引用实体

引用类型必须和引用实体是同种类型
引用时权限不能放大

做参数效率会提高

引用和指针的区别
语法概念上就是一个别名,没有独立空间。
但是在底层实现上实际上时有空间的,因为引用是按照指针的方式来实现的。

1.引用在定义时必须初始化,指针没有要求
2.引用自加,实体也会自加,指针会偏移一个类型的大小
3.引用在初始化引用一个实体后,就不能在引用其他实体/
4.引用使用起来相对更安全

  • 17
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

~nilv

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值