1.编程语言排行榜
我们通过排行可以看出 C++在变成语言中还是占据着重要的地位
2.C++在工作领域中的应用
1.PC客户端开发。⼀般是开发Windows上的桌面软件,比如WPS之类的,技术栈的话⼀般是C++和 QT,QT 是⼀个跨平台的 C++图形用户界面(Graphical User Interface,GUI)程序。
2. 服务端开发。各种大型应用网络连接的高并发后台服务。这块Java也比较多,C++主要用于⼀些对 性能要求比较高的地方。如:游戏服务、流媒体服务、量化高频交易服务等
3. 游戏引擎开发。很多游戏引擎就都是使⽤C++开发的,游戏开发要掌握C++基础和数据结构,学习 图形学知识,掌握游戏引擎和框架,了解引擎实现,引擎源代码可以学习UE4、Cocos2d-x等开源 引擎实现
4. 嵌⼊式开发。嵌入式把具有计算能力的主控板嵌⼊到机器装置或者电子装置的内部,通过软件能够 控制这些装置。比如:智能手环、摄像头、扫地机器⼈、智能音响、门禁系统、车载系统等等,粗略⼀点,嵌入式开发主要分为嵌入式应用和嵌入式驱动开发。
3.namespace的应用
1.定义命名空间,需要使用到namespace关键字,后⾯跟命名空间的名字,然后接⼀对{}即可,{}中 即为命名空间的成员。命名空间中可以定义变量/函数/类型等。
2.C++中域有函数局部域,全局域,命名空间域,类域;域影响的是编译时语法查找⼀个变量/函数/ 类型出处(声明或定义)的逻辑,所有有了域隔离,名字冲突就解决了。局部域和全局域除了会影响 编译查找逻辑,还会影响变量的生命周期,命名空间域和类域不影响变量生命周期。
1.namespace的用处
当我们用rand的时候便会报错,那么我们怎么样可以给他赋值呢?这便用到了namespace
这时,我们调用namespace域内的变量即可。我们可以看到printf的内部,我在rand的前面加了sun::,这是对你的域进行调用,这个sun是我对域的命名。
同样的,当我们想要调用这个域内的函数的时候,也是sun::+函数名字即可
2. namespace可以嵌套
在sun域内,我又定义了xiao和da,同时定义了两个rand,这里我用的是大的rand的值。
3.当定义的域名字相同时,会默认合并到一起
这里我定义了两个名字为sun的域,但是当我调用的时候,他会找到含有这个函数的域并且调用。
4.命名空间的应用
编译查找⼀个变量的声明/定义时,默认只会在局部或者全局查找,不会到命名空间里面去查找。所以 下面程序会编译报错。所以我们要使用命名空间中定义的变量/函数,有三种方式:
• 指定命名空间访问,项目中推荐这种方式。
• using将命名空间中某个成员展开,项目中经常访问的不存在冲突的成员推荐这种方式。
• 展开命名空间中全部成员,项目不推荐,冲突风险很大,日常小练习程序为了方便推荐使用。
1.指定命名
因为默认查找全局变量和局部变量,所以找不到a。这是我们只要sun::a即可,上面已经有展示了。
2.将某一个成员展开
这时我没有在全局或局部定义b,所以他会去找域内的b。
当我们在全局定义b时,会出现报错的情况。但是在局部定义时不会出现此情况,并且b的值是你在局部定义的b的值。
3.将域内全部展开
这里直接将域展开,所以可以直接得到a,b的值。
5.C++的输入与输出
<iostream>是 Input Output Stream 的缩写,是标准的输入、输出流库,定义了标准的输入、输 出对象。
• std::cin 是 istream 类的对象,它主要面向窄字符(narrow characters (of type char))的标准输 入流。
• std::cout 是 ostream 类的对象,它主要面向窄字符的标准输出流。
• std::endl 是⼀个函数,流插入输出时,相当于插入⼀个换行字符加刷新缓冲区。 相当于“\n”
从图中我们看到"\n"与endl的作用一样。 并且我们可以看见cin可以自动识别变量的类型。