|
C ++是一种面向对象的语言。
不。C++是一种多范式编程语言。C ++支持OOP,过程编程,泛型编程,模板元编程和函数式编程。它是一种多范式编程语言,是C ++的最大优点之一。程序员应该可以自由选择自己的编程风格,并且该风格应得到C ++的完全支持。为什么要定义一个打印“ Hello world”的class公正文件?
Bjarne Stroustrup的这句话确实很有道理。
[indent,“当然,并不是每个好的程序都是面向对象的,也不是每个面向对象的程序都是好的。”
[/indent,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说:
[indent,内存不是唯一的资源。资源是使用后必须获取并(显式或隐式)释放的任何东西。例如内存,锁,套接字,文件句柄和线程句柄。一个好的资源管理系统可以处理各种资源。如果释放没有发生,我们就会泄漏,并且由于每种资源数量有限,最终系统会停顿下来。您不需要实际的泄漏即可造成不良影响;过多的资源保留几乎是同样糟糕的。例如,如果系统在内存,锁,文件等上的保留时间是原来的两倍,则系统需要配置的资源可能是原来的两倍。
所以,我说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)。结果是隐式资源管理,这种资源管理在常规使用中是不可见的,并且导致资源保留时间很短。
[/indent,C ++是一种过时且无用的语言。
C ++是一种老式的语言,在软件行业中只对Java,C#,Python等现代语言有需求?不,非常错误。从海洋底部到火星表面,C ++无处不在。
[list=1,
[*,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 ++编写。
[*,Facebook还广泛使用C ++。
[*,您使用WinRAR,对吗?它是用C ++编写的。
[*,Sun / Oracle VM用C ++编写。
[*,Office 365也使用C ++。
[*,MySQL,Microsoft SQL Server,Apache HTTP Server,MariaDB,MongoDB,Oracle数据库,C#编译器已用C ++编写。
[/list,
自C ++ 11以来,C ++一直在不断发展。有C ++ 14标准,最近的C ++标准是C ++ 17。正如Bjarne Stroustrup所说,C ++ 11感觉就像是一种新语言。对于下一个C ++标准C ++ 20,C ++标准委员会非常忙。 |
|