腾讯首席技术架构教你从C语言过渡到C++,真的很实用!
说到C++和C语言的区别,大部分人都会想到面向对象和面向过程。然而这种说法并不许确。面向对象和面向过程指的是两种不一样的程序设计思想,而C++与C是两种编程语言,难道C++就不能用于面向过程去解决问题吗,固然能够。而面向对象的设计思想也能够用到C语言中去,我以前的文章就涉及过这方面的知识。
最后,若是你们若是在自学遇到困难,想找一个C++的学习环境,能够加入咱们的C++学习圈,点击我加入吧,会节约不少时间,减小不少在学习中遇到的难题。ios
腾讯首席技术架构教你从C语言过渡到C++,真的很实用!
咱们这个系列就是要抛开编程思想,单纯地从语法的角度介绍一下C++中究竟加入了哪些C语言中没有的功能。但愿你们在掌握了C语言以后再来学习这部份内容。程序员
首先,让咱们看一段标准的C++代码:编程
腾讯首席技术架构教你从C语言过渡到C++,真的很实用!
这个是一个最基本的程序,用来在屏幕上打印出“Hello World”这句话。是否是和C语言程序差距较大呢?今天,咱们先介绍C++和C语言的几个最基本的不一样。架构
C语言中,标准输入输出的头文件引用方式以下:编程语言
而C++中使用的是:函数
C++规定,由系统提供的头文件在引用时不带“.h”。若是是本身定义的头文件,须要这样引用:学习
注意,这里不只使用了“.h”并且还用了双引号。缘由和C语言相同,从当前路径开始寻找。另外,因为C++是彻底支持C语言的所有功能的,因此当咱们要使用C语言提供的头文件时,依然要使用:spa
这样定义的好处是,咱们只看头文件的包含形式就知道引用的是C++的系统库仍是C语言的系统库,亦或是自定义函数库。设计
你们确定注意到这句话了:调试
using namespace std;
这句话的意思是引入命名空间std,咱们输出字符串使用的cout关键字就在std中。C++库中的函数被划分到不一样的命名空间中,若是须要访问,就要先使用这句话引入命名空间。
假如咱们没有写这句话,就要在每次使用到这些函数时手动指定命名空间,以前的代码就要变成这样:
腾讯首席技术架构教你从C语言过渡到C++,真的很实用!
这样写是合法的,只不过有些麻烦。
C++的输入输出作了较大的修改,咱们先看下面这个例子:
腾讯首席技术架构教你从C语言过渡到C++,真的很实用!
这个程序实现了输入两个数字,以后把它们打印在屏幕上。程序的执行结果以下:
cin
至关于scanf,用于把输入的字符保存在后面的变量中。cin必须和>>一块儿使用,须要输入几个变量就写几个变量,之间用>>分隔开。
cout
至关于printf,用于把字符串或变量打印在屏幕上。须要打印的元素要用<<分隔开,endl表示换行。
这两个关键字最大的优点是不须要关注变量的数据类型,C++会根据变量的定义自动匹配合适的数据类型。
使用这两个关键字时必须包含<iostream>这个库。
C语言中有个被不少人诟病的规定是变量的定义必须放在代码块的首部。这样就会常常出现变量的定义和第一次使用之间距离很远,好比下面这段代码。
腾讯首席技术架构教你从C语言过渡到C++,真的很实用!
这段代码中,变量i的声明和第一次使用之间可能隔了几十行的代码。这样严重影响了代码的可读性,也提升了调试的成本。
在C++中,这种状况本根本地解决了。C++容许在任何地方定义变量,只要在使用它以前就行。因而就有了这样的写法:
腾讯首席技术架构教你从C语言过渡到C++,真的很实用!
这样写是否是变得很是清楚了。在C++中,咱们习惯在使用变量时定义,不少只会用C语言的程序员也在使用.cpp文件写代码就是为了有这么一个便利条件。
虽然我是带你们先学C语言再学C++的,不少程序员也都是走的这个学习路线。但并非必定要先学C再学C++。
我老是用这么个例子来解释这个问题。C和C++就仿佛是手动挡和自动挡的区别,虽然咱们大部分人都是先学手动挡再学自动挡,但并不能说不会开手动挡的人就学不会自动挡。自动挡其实还更好学一些。对于驾驶这两种车而言,它们有不少相同的部分,好比打方向的方法、踩油门和刹车的方法、打转向灯的方法、转弯并线等等这些要点都是相同的,只不过你先学哪一个就在那里学习这些公共部分而已。
C和C++也是同样,80%以上的语法点都是相同的,而这些语法点你是经过哪一种语言学会的没有任何区别。
大部分学校安排课程的时候都是先学C再学C++,由于C更关注细节,可以帮助学生更清晰地了解程序和硬件的一些关系,人们认为只要这么学才能打下好的基础。但随着计算机编程技术的不断发展,现在更流行的观点是编程就是为了帮助咱们更好地使用计算机解决问题,以这个目的为导向,那些不必知道的东西能够不去在乎。因而愈来愈多的人用C++、Java、甚至Python这样远离硬件的语言进行编程入门。这些人依然能够设计出本身想要的程序。
因此,请你们不要再纠结先学谁后学谁的问题了,可能不久后,我就会推出从零开始学习C++这样的系列了。
敬请期待~
腾讯首席技术架构教你从C语言过渡到C++,真的很实用!