摘要:【自媒体|对C++程序员说这些,你可能会被无情的嘲笑,并显得你很无知。|自媒体】“当然,并不是每个好的程序都是面向对象的,也不是每个面向对象的程序都是好的。”C ++只是对C的扩展,是C的超集。C和C ++都是不同的编程语言,具有不同的规则并由不同的委员会标...
按关键词阅读:

文章图片

文章图片
C ++是一种面向对象的语言 。
不 。 C++是一种多范式编程语言 。 C ++支持OOP , 过程编程 , 泛型编程 , 模板元编程和函数式编程 。 它是一种多范式编程语言 , 是C ++的最大优点之一 。 程序员应该可以自由选择自己的编程风格 , 并且该风格应得到C ++的完全支持 。 为什么要定义一个打印“ Hello world”的class公正文件?
Bjarne Stroustrup的这句话确实很有道理 。
“当然 , 并不是每个好的程序都是面向对象的 , 也不是每个面向对象的程序都是好的 。 ”C ++只是对C的扩展 , 是C的超集 。
C和C ++都是不同的编程语言 , 具有不同的规则并由不同的委员会标准化 。 自C99以来 , C和C ++都出现了分歧 。 C99和C11的许多功能并不是C ++语言的正式组成部分 , 但某些编译器喜欢g++并clang++支持它们作为编译器扩展 。 C ++不是100%向后兼容C 。 有许多程序在C中有效 , 但在C ++中无效 。
C ++中的内存管理容易出错 , 并且内存泄漏是令人讨厌的问题 , 因为C ++缺少垃圾回收 。
这是绝对错误的误解 , 大多数Java和C#程序员都对C ++有所了解 。 垃圾回收打破了C ++的主要设计理念之一:“您不用为不使用的东西付费” 。 这意味着 , 如果您不需要垃圾收集 , 则C ++运行时系统不应浪费时间清理整个垃圾 。 C ++程序员必须避免使用new/new[
和delete/delete[
大部分的时间 。 如果需要动态数组 , 请使用std::vector 。 如果您需要字符串 , 请使用 , std::string而不要使用纯C样式char[
/char* 。 如果您需要单链表 , 请使用std::forward_list 。 如果您需要双向链表 , 请使用std::list 。 使用标准库容器是因为它们自己自动管理分配和释放 。
Bjarne Stroustrup说:
内存不是唯一的资源 。 资源是使用后必须获取并(显式或隐式)释放的任何东西 。 例如内存 , 锁 , 套接字 , 文件句柄和线程句柄 。 一个好的资源管理系统可以处理各种资源 。 如果释放没有发生 , 我们就会泄漏 , 并且由于每种资源数量有限 , 最终系统会停顿下来 。 您不需要实际的泄漏即可造成不良影响;过多的资源保留几乎是同样糟糕的 。 例如 , 如果系统在内存 , 锁 , 文件等上的保留时间是原来的两倍 , 则系统需要配置的资源可能是原来的两倍 。C ++是一种过时且无用的语言 。
所以 , 我说C ++是我最喜欢的GC语言 , 因为它产生的垃圾很少 。 C ++ 11支持垃圾回收接口 , 因此您可以将GC用作最后的手段(用于内存) 。 但是在诉诸于此之前 , 我建议系统地使用资源句柄:让每个资源在某个范围内都有一个所有者 , 并且默认情况下在其所有者范围的末尾将其释放 。 顺便说一下 , 这正是Unix在每个进程的基础上处理内存 , 锁和文件的方式 。 在C ++中 , 这称为RAII(“资源获取是初始化”) , 并以异常的形式与错误处理集成在一起 。 可以使用移动语义或“智能指针”将资源从一个范围移动到另一个范围 , 并且可以通过“共享指针”来表示共享所有权 。 shared_ptr它是指向共享对象的指针 , 该共享对象的最后一个超出范围(被销毁)时将被释放(shared_ptr销毁) 。
在C ++ 11标准库中 , RAII普遍存在:例如 , 内存(string vector map unordered_map等) , 文件(ifstream ofstream等) , 线程(线程) , 锁(lock_guard unique_lock等)和常规对象(通过unique_ptr和shared_ptr) 。 结果是隐式资源管理 , 这种资源管理在常规使用中是不可见的 , 并且导致资源保留时间很短 。
C ++是一种老式的语言 , 在软件行业中只对Java , C# , Python等现代语言有需求?不 , 非常错误 。 从海洋底部到火星表面 , C ++无处不在 。
- Web浏览器开发人员正在使用(用C ++编写)(谷歌浏览器 , Firefox , Opera , Internet Explorer , Safari , Chromium , Microsoft Edge) 。
- Microsoft Windows OS和Mac OS , Symbian OS也广泛使用C ++ 。
- 您使用Microsoft Visual Studio开发.NET程序 , 对吗?它也已经用C ++编写 。
- VLC Media Player , CCleaner , Internet Download Manager , KGB存档器 , Media Player Classic , KMPlayer , Notepad ++ , Microsoft Excel等著名的应用程序软件也都用C ++编写 。分页标题#e#
- Facebook还广泛使用C ++ 。
- 您使用WinRAR , 对吗?它是用C ++编写的 。
- Sun / Oracle VM用C ++编写 。
- Office 365也使用C ++ 。
- MySQL , Microsoft SQL Server , Apache HTTP Server , MariaDB , MongoDB , Oracle数据库 , C#编译器已用C ++编写 。
【自媒体|对C++程序员说这些,你可能会被无情的嘲笑,并显得你很无知。】自C ++ 11以来 , C ++一直在不断发展 。 有C ++ 14标准 , 最近的C ++标准是C ++ 17 。 正如Bjarne Stroustrup所说 , C ++ 11感觉就像是一种新语言 。 对于下一个C ++标准C ++ 20 , C ++标准委员会非常忙 。
来源:(还能说晚安吗)
【】网址:/a/2021/0302/kd754716.html
标题:自媒体|对C++程序员说这些,你可能会被无情的嘲笑,并显得你很无知。