C++入门(上)

C++是为了解决C语言一些难以解决或者无法解决的问题而设计出来了。C++是在C的基础之上,容纳进去了面向对象编程思想,并增加了许多有用的库,以及编程范式等。

目录

一、命名空间

二、缺省参数

1.全缺省

2.半缺省 

三、函数重载

1.参数类型不同

2.参数个数不同

3.参数类型顺序不同

四、引用

总结


一、命名空间

在C++中,许多操作符或者函数都需要使用命名空间,比如下面这个标准化输出代码,不使用命名空间就会报错。

报错说未定义标识符 

因为标准化输出中 cout 和 endl 是在std这个命名空间里的,因此我们需要再cout 和 endl 前面添加上  std::  才可以。

这里又引入了一个概念,  :: 是指作用域,std:: 这句代码是告诉编译器,是要去std命名空间里找后续接上的东西(类、变量、函数等等)。

但是如果每一个输入输出都这样写,未免也太麻烦了一点,因此我们可以再函数的最上方添加上下面这局代码

using namespace std;

这表示展开std命名空间,后续如果要再次使用std空间下的类或者其他的内容,就可以直接使用了,因为我们已经展开了

累似于这种便不会报错了。

当然,我们也可以有自己的命名空间

namespace kky
{
	int c = 10;
	int add(int a, int b)
	{
		return a + b;
	}
}

这里我们定义了一个属于自己的命名空间,里面放有一个变量c和一个函数add。如果我们需要使用它,前面也要加上   kky::  例如

注意:命名空间不可随意放开,不然如果两个命名空间内的函数或者变量有冲突,也会报错,因此是否要展开命名空间,我们要根据实际情况而定。

二、缺省参数

1.全缺省

缺省参数是指在函数中,函数参数所给到的默认值,你如果不传参,就会使用这个默认值,你如果传参,就会使用你传过来的参数,如下图所示

同时,还有全缺省,是指函数中所有的参数都有一个缺省值,我们调用的时候可以不给,也可以给一个或者两个甚至更多,只要不超过参数个数即可。

当我们给部分参数时,他函数所对应的参数,是我们所给参数从左往右的值,有几个就会给几个,如果后面没有值了就会给到缺省参数,如下图

注意:我们必须从左到右依次传参数,中间不可以有空格, 否则编译器会报错。

2.半缺省 

 半缺省是指函数必须从右往左给缺省值,意思就是右边如果没有给缺省值,那么左边也必定不能给缺省值,如下图。

这里我们左边给了缺省值,右边没给,编译器就会报错,但我们稍作修改,如下,便可以运行

注意:函数定义时不可使用缺省函数 

三、函数重载

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

1.参数类型不同

会根据你所传的参数去调用符合参数类型的函数。

注意:只有返回类型不同的两个函数不能构成函数重载!!!

这也很符合逻辑,因为函数参数类型都相同的话,他该去找那个函数呢?两个都可以找,只是返回类型不一样,这样肯定会产生二义性!

2.参数个数不同

如下,一个参数是空,一个有一个参数,参数名字相同也可以构成重载。

3.参数类型顺序不同

注意:他们是参数类型顺序不同,不是参数变量不同!

第一个 test1 参数为(int,char) 

第二个 test2 参数为(char,int)

这样也能构成函数重载。 

四、引用

应用的本质就是给已存在的变量取别名,编译器也不会为他开辟一块新的空间,而是和他引用的变量公用同一块空间。引用使用的符号是&

这里我们可以看到 a  和  b  的地址是一样的,注意这里的输出的地方  &a  和  &b  对于编译器来讲不是引用而是地址,要在类型后紧跟着&才算是引用,如  int& b = a;  并且引用有三个特性

  1. 用在定义时必须初始化
  2.  一个变量可以有多个引用
  3. 引用一旦引用一个实体,再不能引用其他实体

 如果别名被修改了,该别名并不会变成其他新变量的别人,而是有始有终的一直指向原变量。

引用不光可以对变量使用,还可以对函数使用,函数参数类型可以为引用,函数返回值也可以为引用。但是,如果返回值为局部变量,请千万不要传返回引用,如下,虽然没有明显的报错,但是这样是没有意义的,并且ret是随机值。

同时,传引用可以提高效率,因为他是别名,所以不会再重新创建变量,如果你需要让形参的修改去影响实参,请尽情使用引用,或者你在函数内部不会修改参数,也可以传const &,这都是提高效率的办法。如果返回的变量不是局部变量,而是全局变量,也可以使用引用返回,小心处理即可。

对于 const 对象,需要对他做引用也必须使用 const 引用,因为只允许引用是类型的别名,你本来就是个常对象,却使用非常引用,这算扩大了权限,是不可以的。

 

下面是权限的缩小,便没有问题。 

总结

讲解了C++一些不同于C语言的地方,未完待续!!

  • 13
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值