C++概况

简介: 目前业界还没有可以替换C++的语言出现。

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++是最合适的语言。

目录
相关文章
|
Unix 程序员 C#
C++大体概况
C++大体概况
51 0
|
10天前
|
存储 编译器 C++
【c++】类和对象(中)(构造函数、析构函数、拷贝构造、赋值重载)
本文深入探讨了C++类的默认成员函数,包括构造函数、析构函数、拷贝构造函数和赋值重载。构造函数用于对象的初始化,析构函数用于对象销毁时的资源清理,拷贝构造函数用于对象的拷贝,赋值重载用于已存在对象的赋值。文章详细介绍了每个函数的特点、使用方法及注意事项,并提供了代码示例。这些默认成员函数确保了资源的正确管理和对象状态的维护。
39 4
|
12天前
|
存储 编译器 Linux
【c++】类和对象(上)(类的定义格式、访问限定符、类域、类的实例化、对象的内存大小、this指针)
本文介绍了C++中的类和对象,包括类的概念、定义格式、访问限定符、类域、对象的创建及内存大小、以及this指针。通过示例代码详细解释了类的定义、成员函数和成员变量的作用,以及如何使用访问限定符控制成员的访问权限。此外,还讨论了对象的内存分配规则和this指针的使用场景,帮助读者深入理解面向对象编程的核心概念。
35 4
|
1月前
|
存储 编译器 对象存储
【C++打怪之路Lv5】-- 类和对象(下)
【C++打怪之路Lv5】-- 类和对象(下)
27 4
|
1月前
|
编译器 C语言 C++
【C++打怪之路Lv4】-- 类和对象(中)
【C++打怪之路Lv4】-- 类和对象(中)
24 4
|
1月前
|
存储 安全 C++
【C++打怪之路Lv8】-- string类
【C++打怪之路Lv8】-- string类
21 1
|
1月前
|
存储 编译器 C++
【C++类和对象(下)】——我与C++的不解之缘(五)
【C++类和对象(下)】——我与C++的不解之缘(五)
|
1月前
|
编译器 C++
【C++类和对象(中)】—— 我与C++的不解之缘(四)
【C++类和对象(中)】—— 我与C++的不解之缘(四)
|
1月前
|
C++
C++番外篇——对于继承中子类与父类对象同时定义其析构顺序的探究
C++番外篇——对于继承中子类与父类对象同时定义其析构顺序的探究
53 1
|
1月前
|
编译器 C语言 C++
C++入门4——类与对象3-1(构造函数的类型转换和友元详解)
C++入门4——类与对象3-1(构造函数的类型转换和友元详解)
20 1
下一篇
无影云桌面