赞
踩
目录
首先是一个非常常问的问题:C++难不难?
这边可以肯定的回答:挺难的
不过再难学会了也有很多好处的
比如说我们的的后端开发,或者游戏,又或者一些人工智能的代码
这些都需要用C++去书写
而且学会C++我们去竞赛会比用C语言去竞赛会有很大的优势
这里废话不多说,我们开始第一节
C++相比较于参与原增加了将近一倍的关键字
asm | do | if | return | try | continue |
auto | double | inline | short | typedef | for |
bool | dynamic_cast | int | signed | typeid | public |
break | else | long | sizeof | typename | throw |
case | enum | mutable | static | union | wchar_t |
catch | explicit | namespace | static_cast | unsigned | default |
char | export | new | struct | using | friend |
class | extern | operator | switch | virtual | register |
const | false | private | template | void | true |
const_cast | float | protected | this | volatile | while |
delete | goto | reinterpret_cast |
这里是一些关键词,总计63个关键词,C语言总计32个关键词
关键词我们在这里不过多解释
等我们学习的不断深入,我们也会不断的去了解这些关键词
在C/C++中,变量、函数和后面要学到的类都是大量存在的,这些变量、函数和类的名称将都存在于全局作用域中,可能会导致很多冲突。使用命名空间的目的是对标识符的名称进行本地化,以避免命名冲突或名字 污染,namespace关键字的出现就是针对这种问题的。
定义命名空间
需要使用到namespace关键字,后面跟命名空间的名字,然后接一对{}即可,{}中即为命名空间的成员。
- namespace N1 // N1为命名空间的名称
- {
- // 命名空间中的内容,既可以定义变量,也可以定义函数
- int a;
- int Add(int left, int right)
- {
- return left + right;
- }
- }
如我们的代码所示,我们在命名空间中,将空间名称定义为N1
而a和Add函数都是我们空间的内容,如果不加以解释,是无法使用的
在这里我们可以看到,我们的add是报错的,我们的a也是报错的,没有找到我们的add和a
怎么使用呢?
我们一会马上揭晓
在这里,我们将我们的命名空间N2中嵌套了一个N3 ,那么这里如果加以引用,我们也可以使用N3中的元素
同一个工程中允许存在多个相同名称的命名空间
如果同一工程中我们有多个相同的命名空间,那么编译器最后会合成同一个命名空间中。
命名空间中成员该如何使用呢?
像我们刚才的这个图一样,我们如如何使用我们的命名空间的元素呢?
我们在我们的元素前面加上我们的空间名和::就可以使用了
我们使用using+空间名+::+所调用的元素 这样就可以去使用我们空间中的元素了
使用using namespace 命名空间名称引入
这样引入后,我们就可以不用再加空间名称和::去使用了,
但是这样有很大的弊端,如果我们空间里的元素和我们的定义的元素冲突了,就会以我们主函数中的为主
这样去书写代码会很容易出错误
所以我们在不同的场景,可以使用不同的方式
C++作为我们C语言的延伸代码
也是和C语言是不同的
我们来看一看C++是如何问世的
- #include<iostream>
- using namespace std;
- int main()
- {
- cout << "hello world" << endl;
- return 0;
- }
使用cout标准输出(控制台)和cin标准输入(键盘)时,必须包含< iostream >头文件以及std标准命名空 间。
这里的endl是换行,类似于我C语言中的\n
注意:早期标准库将所有功能在全局域中实现,声明在.h后缀的头文件中,使用时只需包含对应头文件 即可,后来将其实现在std命名空间下,为了和C头文件区分,也为了正确使用命名空间,规定C++头文 件不带.h;旧编译器(vc 6.0)中还支持格式,后续编译器已不支持,因此推荐使用 +std的方式。
这里也就不多过叙述了,等到我们往下学会继续加深,现在知道这些目前来说够用的
大家知道什么是备胎吗?
没错,我们的C++也有函数备胎
缺省参数是声明或定义函数时为函数的参数指定一个默认值。在调用该函数时,如果没有指定实参则采用该默认值,否则使用指定的实参
我们这样去利用写的Fun函数,就会打印10
如果我们不传参呢?
这里了就会显示为0
所以:
没有传参时,使用参数的默认值
传参时,使用指定的实参
- void TestFunc(int a = 10, int b = 20, int c = 30)
- {
- cout<<"a = "<<a<<endl;
- cout<<"b = "<<b<<endl;
- cout<<"c = "<<c<<endl;
- }
这里的全缺省参数意思就是:
函数传参时,参数都有指定的值,当我们没有去传递参数的数值时,就会使用这些固定的参数
有全缺省就会有半缺省
- void TestFunc(int a, int b = 10, int c = 20)
- {
- cout<<"a = "<<a<<endl;
- cout<<"b = "<<b<<endl;
- cout<<"c = "<<c<<endl;
- }
这里的a没有固定的传递值,而bc有,所以就是半缺省
注意:
自然语言中,一个词可以有多重含义,人们可以通过上下文来判断该词真实的含义,即该词被重载了。 比如:以前有一个笑话,国有两个体育项目大家根本不用看,也不用担心。一个是乒乓球,一个是男足。前 者是“谁也赢不了!”,后者是“谁也赢不了!”
函数重载:是函数的一种特殊情况,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;
- }

Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。