C++概况
目前业界还没有可以替换C++的语言出现。
CPP的历史
● C++编程语言的历史可以追溯到1979,Bjarne Stroustrup创立了带类的C.顾名思义,这是C语言的超集;在1983年,语言的名字真正的编程了C++;
● C++在最开始可以称为C语言的增强版,但是在后来,C++又引入了许多新的功能,逐步增强了C++的可用性,1998年伴随着STL标准库的诞生,一堆新的功能和特性的产生,C++标准委员会发布了第一个国际标准C++ + ISO/IEC 1488 :称为C++98;
● 在2011年中期,C++标准(称为C++11)完成了新的标准。Boost库项目对新标准产生了相当大的影响,一些新模块直接从响应的Boost库中派生出来。
● C++11之后,C++以每3年一版的频度发布着新的语言标准,每一版都在基本保留向后兼容性的同时,提供着改进和新功能。
CPP VS C
● 当C++被作为C语言的超集时,有什么是C++语言可以做到而C语言不擅长的?
// CPPDemo1.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include "stdio.h" // C面向过程的方式 static int noisy = 0; // 状态信息 static FILE* pFile = NULL; // 文件指针 void trace(char* s) { if (noisy) fprintf(pFile, "%s\n", s); if (!pFile) { fclose(pFile); pFile = NULL; } } void trace_on() { noisy = 1; } void trace_off() { noisy = 0; } // C++面向对象方式 class Trace { public: Trace() { noisy = 1; f = stdout; } Trace(FILE* ff) { noisy = 1; f = ff; } ~Trace() { noisy = 0; if (!f) { fclose(f); f = NULL; } } void on() { noisy = 1; } void off() { noisy = 0; } void trace(char* s) { if (noisy) { fprintf(f, "%s\n", s); } } private: int noisy;// 状态信息 FILE* f; }; int main() { // C面向过程的方式 FILE* f0; fopen_s(&f0, "cppdemo0.txt", "w"); pFile = f0; trace_on(); trace("hi1"); pFile = stdout; trace("hi2"); trace_off(); pFile = f0; trace("hi1"); pFile = stdout; trace("hi2"); fclose(f0); // C++面向对象方式 FILE* f; fopen_s(&f, "cppdemo1.txt", "w"); Trace t1(f); t1.trace("hi1"); Trace t2; t2.trace("hi2"); t1.off(); t1.trace("hi1"); t2.trace("hi2"); return 0; }
● C使用添加全局变量和全局函数来处理新增功能,C中功能扩展会比较困难;
● 面向对象可以使得对象和对象之间的变量的关系更紧凑。
CPP的特点
● 优点:
○ 强大的抽象封装能力:这让C++语言具备了强大的开发工程的能力,在封装的同时C++最大程度的保留了性能;
○ 高性能:运行快,并且占用资源少一直是C++语言的追求;
○ 低功耗:特别适合在各种微型的嵌入式设备中运行高效的程序;
● 缺点:
○ 语法相对复杂,细节比较多,学习曲线比较陡峭;
○ 需要一些好的规范和范式,否则代码很难维护;
CPP的应用
● 大型桌面应用: Google Chrome和Microsoft Office等等
● 大型网站后台:Google的搜索引擎等等
● 游戏和游戏引擎:Unity等等
● 编译器、解释器:LLVM、JAVA虚拟机等等
● 视觉和智能引擎:OpenCV、Tensorflow等等
● 数据库:Sql Server、Mongodb等等
● 其他:自动驾驶系统、嵌入式设备等等
总结
总的来说,C++开发成本比较高;对于内存和CPU要求很高,低功耗并且程序被调用非常频繁等场景,目前来说C++是最合适的语言。