从零开始C++系列 c++ 入门

C++ 入门

C++关键字

c++是包容c的,也包容c的所有关键字,c有32个关键字,c++有63个关键字,下面分类列出。
在这里插入图片描述
关键字功能与特性,我们会在后面详细解读

C++特性

  1. 命名空间
    在C/C++中,变量、函数和后面要学到的类都是大量存在的,这些变量、函数和类的名称将都存在于全局作用域中,可能会导致很多冲突。使用命名空间的目的是对标识符的名称进行本地化,以避免命名冲突或名字污染,namespace关键字的出现就是针对这种问题的。
    在这里插入图片描述

  2. 命名空间的使用

    1. 加命名空间名称及作用域限定符
int main()
{
	n::i = 9;
	printf("%d", n::i);
	return 0;
}
  1. 使用using将命名空间中成员引入
using n::i;
int main()
{
	
	printf("%d", n::i);
	return 0;
}

使用using namespace 命名空间名称引入

using namespace n;
int main()
{
 printf("%d\n", n::i);
 printf("%d\n", k);
 return 0; 
}
  1. c++ 的输入和输出
#include<iostream>
using namespace std;
int main()
{
	cout << "Hello world!!!" << endl;
	return 0;
}

说明:

  1. 使用cout标准输出(控制台)和cin标准输入(键盘)时,必须包含< iostream >头文件以及std标准命名空
    间。
    注意:早期标准库将所有功能在全局域中实现,声明在.h后缀的头文件中,使用时只需包含对应头文件即可,后来将其实现在std命名空间下,为了和C头文件区分,也为了正确使用命名空间,规定C++头文件不带.h;旧编译器(vc 6.0)中还支持<iostream.h>格式,后续编译器已不支持,因此推荐使用+std的方式。
  2. 使用C++输入输出更方便,不需增加数据格式控制,比如:整形–%d,字符–%c

在这里插入图片描述

注意 : cin指向变量 输入。cout打印变量,指向cout。

缺省参数

  1. 缺省就是默认。默认参数就是恢复出厂设置吧。缺省参数是声明或定义函数时为函数的参数指定一个默认值。在调用该函数时,如果没有指定实参则采用该默认值,否则使用指定的实参。
int stradd(int a = 9)//默认设置为a=9 当不传参时则为9
{
	return a * a;
}
  1. 缺省参数的分类

在这里插入图片描述
注意: 缺省参数不能在函数的定义和命名中同时出现,否则编译器无法识别。缺省值必须是常量或者全局变量。

函数重载

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

int Add(int left, int right)
{
	
		return left + right;
}
double Add(double left, double right)
{
	return left + right;
}
long Add(long left, long right)
{
	return left + right;
}
int main()
{
	Add(10, 20);
	Add(10.0, 20.0);
	Add(10L, 20L);

	return 0;
}

注意 :

  1. 函数名称必须相同。
  2. 参数列表必须不同(个数不同、类型不同、参数排列顺序不同等)。
  3. 函数的返回类型可以相同也可以不相同。
  4. 仅仅返回类型不同不足以成为函数的重载
  5. 反回类型和是否重载无关
    例如

在这里插入图片描述
另外 函数重载有且只有一个 同样变量的缺省参数
例如在这里插入图片描述
虽然构成了 重载 但缺省参数出现了问题 一样不能重载。

函数重载原因

语言没办法支持重载,因为同名函数没办法区分。而C++是通过函数修饰规则来区分,只要参数不同,修饰出来的名字就不一样,就支持了重载。

extern “c”

在实际中 我们经常c和c++同时使用 然后c++和c的函数名修饰规则又不一样,就需要使用extern c ,在函数前加extern “c” 表示函数使用c的规则,那么函数就不支持重载。

在这里插入图片描述
注意:
c++ 默认浮点数为double类型 要传入float需要后面加f

引用

引用不是新定义一个变量,而是给已存在变量取了一个别名,编译器不会为引用变量开辟内存空间,它和它引用的变量共用同一块内存空间。

在这里插入图片描述
可以看到 b作为a的别名 和a是等效的。

注意:

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

引用传参

在这里插入图片描述
注:

  1. 因为 a和b分别是x和y的别名 所以x和y在swap做个函数栈桢中相当于a和b的别名。

  2. 重载的错误 int&和int 不构成重载

在这里插入图片描述

引用和指针的对比

  1. 引用在定义时必须初始化,指针没有要求
  2. 引用在初始化时引用一个实体后,就不能再引用其他实体,而指针可以在任何时候指向任何一个同类型
    实体
  3. 没有NULL引用,但有NULL指针
  4. 在sizeof中含义不同:引用结果为引用类型的大小,但指针始终是地址空间所占字节个数(32位平台下占
    4个字节)
  5. 引用自加即引用的实体增加1,指针自加即指针向后偏移一个类型的大小
  6. 有多级指针,但是没有多级引用
  7. 访问实体方式不同,指针需要显式解引用,引用编译器自己处理
  8. 引用比指针使用起来相对更安全
  • 20
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 18
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值