C++虽然是基于C语言开发的,但是经过版本的不断更迭,有些语法,操作和C语言还是有区别的。所以这也是很多人在学完C语言后,看到C++,总感觉两者没有关联,甚至觉得是两种不同的语言。读者在看本文前,应当具备C语言的基础知识。
为了能更快入门C语言,本文挑出了一些重要概念加一说明。读者可能会问:为什么这些概念如此重要?举个例子:要想理解,而不是以一种模板的方式看待C++输出Hello World的这样一段简单程序,就需要很多概念
include usingnamespacestd;intmain(){cout<<"Hello World!"<<endl;return0;
}1234567
一:建立C++工程文件
想必大部分读者进行C/C++学习时,使用的编译器是VS studio,那么大家可能也知道在VS里是没有关于C语言文件的项目的,都是选择C++项目,然后将后缀名改为.c文件
但是即便你选择了C++,去编写C语言仍然是可以通过的。
这表明,C++是兼容C语言的。所以,之后我们学习C++话,就不用修改了,后缀名直接是.cpp
二:C++关键字
为什么这里要提及关键字呢。因为任何语言的关键字都是很特殊的,它是独一无二的。C语言共计32个关键字,C++共计63个关键字。
三:命名空间
情景导入:
一项工程,需要你和小王一起完成,你们两个在各自编写模块时都编写了一个相同名字的接口(函数),等到代码合并时,就出现了错误,原因可想而知,C/C++中,变量,函数以及类会作用域全局域中,相同的名字导致了命名冲突或名字污染
C语言不能有效的解决这样的问题。比如,我们都知道scanf函数是C语言的标准输入输出函数,但是下面的这样一个操作中,肯定是有歧义的,但是语法上似乎没有大的错误题型
scanf是函数名,却可以当作变量名。不过最后肯定是无法输出的,因为产生了歧义。在编译中首先展开了stdio.h头文件,scanf函数就在其中(函数名就是函数的首地址),所以执行到这一步,编译器不知道这里应该是要输出这个函数的地址还是要输出你定义的那个变量。
当然这些问题,可以用C++中的命名空间去解决
(1)命名空间的作用
C/C++中,变量,类的名称将存在于全局作用域中,重复的名字或其他问题将导致一些不可预见的错误。命名空间可以有效的解决这个问题,使用命名空间目的在于将标识符的名称本地化,以免冲突。
简单点来说,把名字关进小黑屋,你的和我的即便名字是一样的,但是本质是不一样的,使用时按照一定方式打开小黑屋
(2)命名空间的定义
A:命名空间的定义
定义命名空间时,要使用namespace关键字,其后紧接该命名空间的名字,然后写上{},括号内即是该命名空间的成员。有点像结构体。
namespaceN1//将改命名空间定义为N1{inta;//可以存放变量voidswap(int* a,int*b)//可以存放函数{inttemp=*a;
*a=*b;
*b=temp;
}
}12345678910
当然命名空间也是可以嵌套的
namespaceN2{inta;namespaceN3{voidswap(int* a,int*b){inttemp=*a;
*a=*b;
*b=temp;
}
}
}12345678910111213
同一个工程文件允许存在多个相同名称的命名空间,编译器最后会将其合并到同一个命名空间中。
B:注意事项
定义好命名空间,就相当于定义了一个新的作用域(小黑屋),命名空间中的所有内容都局限于该命名空间,除非使用时进行释放(打开小黑屋)。
如下,对于上面的那个例子中,如果定义命名空间,将不会出现错误:
(3)命名空间的使用
命名空间定义好之后,就把它关进小黑屋了,那么在使用时该如何使用呢。具体来说,有以下三种方法,各有其优缺点
1. 命名空间名称和作用域限制符
2. 使用using将成员导入
3.暴力导入
所以在最开始提及的输出Hello World!的程序中,using namespace std的作用就是将C++库进行导入。
总的来说,日常练习时,为了方便可以使用第三种暴力导入,但是在实际开发中,应当使用第一种和第二种,如果某个变量使用的较多的话,就使用第二种预先将这个变量名导入。
四:C++的输入和输出
输出Hello World是学习每个语言时的必备操作。最前面的那个C++输出似乎和C语言不太像,你当然可以使用printf输出,因为C++兼容C语言。但是在C++中,还是建议使用C++规定的输入和输出方式,它比C语言要更加方便,智能。
(1)cout
1.cout表示输出流,也就是控制台,所以你的Hello World可以写作
2.很多时候,会在最后加上endl,它表示换行符,表示换行符流向控制台
3.C++输出时非常方便,不像C语言一样,它不需要格式控制符
4.C++支持连续输出
(2)cin
1.cin表示输入流,也就是键盘。输入时无需指定格式,自动识别
2.当然也可以连续输入
- 注意:虽然C++的输入和输出有如上优点,但是C++在面对特定输出时,还是显得有点麻烦,比如控制小数位数,如果用C语言输出,在格式控制符的帮助下,就会显得很简单。所以不要拘泥于一定要使用哪一种方式,怎么方便怎么来。
声明:本文部分素材转载自互联网,如有侵权立即删除 。
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需!
7. 如遇到加密压缩包,请使用WINRAR解压,如遇到无法解压的请联系管理员!
8. 精力有限,不少源码未能详细测试(解密),不能分辨部分源码是病毒还是误报,所以没有进行任何修改,大家使用前请进行甄别
丞旭猿论坛
暂无评论内容