返回C++ (现代C++)的欢迎
C++ 是一种最常用编程语言在世界上。 正确编写的 C++ 程序是快速、高效。 因为您可以使用它创建广泛阿普斯从有趣和激动人心的游戏,为高性能科学软件,对设备驱动程序、嵌入程序和 windows 帐户端 apps,语言比其他语言灵活。 超过 20 中,C++ 用于解决此类和许多其他的问题。 您可能不知道是增加号码 C++ 程序员折叠已过时 C 编程"和穿上的现代 C++。
一个 C++ 的原始要求与 C 语言的向后兼容性。 从那时,C++ 通过使用选件类,然后在原 C++ 语言规范的多个迭代 C 发展,然后许多后续增强功能。 因此遗产,C++ 通常称为多范例编程语言。 在 C++ 中,可以执行大多数纯程序 C 编程这涉及的原始指针、数组、null 终止的字符串)、自定义数据结构和可以启用对性能的其他功能,但也会产生 bug 和复杂。 因为 C 编程填充这样的危险,其中一个 C++ 生成的目标是使程序类型安全、更易于编写,扩展,并维护。 在早期,C++ 接受的编程示例例如面向对象的编程方法。 多年来,函数已添加到语言,具有高测试的标准数据库结构和算法。 它是呈现现代 C++ 样式成为可能的这些新增。
现代 C++ 基础:
而不是堆或静态全局范围的基于堆栈的大小。
而不是显式类型名称的自动类型推理。
而不是原始指针的智能指针。
std::string 和 std::wstring 类型 (请参见 <string>) 而不是原始的 char[] 数组。
标准模板库 (STL) 容器希望 vector、list和 map 而不是原始数组或自定义容器。 请参见 <vector>、<list> 和 <map>。
而 不是手动编码的那些的STL 算法。
异常,对报告和处理错误条件。
使用 STL std::atomic<> 的无锁的线程间的通信 (请参见 <atomic>) 而不是其他线程间的通信机制。
而不是单独实现小函数的内联 lambda 函数 。
基于范围为循环将与数组、STL 容器和 Windows 运行时 集合使用在窗体 for (for-range-declaration :expression )编写更可靠的循环。 这是核心语言的一部分支持。 有关更多信息,请参见基于范围的 for 语句 (C++)。
C++ 语言也发展。 比较下面的代码段。 这是一个演示了如何使用 C++ 中:
// circle and shape are user-defined types
circle* p = new circle( 42 );
vector<shape*> v = load_shapes();
for( vector<circle*>::iterator i = v.begin(); i != v.end(); ++i ) {
if( *i && **i == *p )
cout << **i << “ is a match\n”;
}
for( vector<circle*>::iterator i = v.begin();
i != v.end(); ++i ) {
delete *i; // not exception safe
}
delete p;
这是同一事物如何在现代 C++ 完成:
#include <memory>
#include <vector>
// ...
// circle and shape are user-defined types
auto p = make_shared<circle>( 42 );
vector<shared_ptr<shape>> v = load_shapes();
for_each( begin(v), end(v), [&]( const shared_ptr<shape>& s ) {
if( s && *s == *p )
cout << *s << " is a match\n";
} );
在现代 C++,因为您可以使用智能指针,不必使用 new/delete 或显式异常处理。 当您使用 auto 类型扣除保存和 lambda 函数时,您可以编写代码更快,生成并更好地了解它。 并 for_each 比 for 循环是更加整洁,更易于使用,并且不容易意外错误。 可以与代码一起最小行使用的编写自己的应用程序。 您可以对内存安全代码异常安全,并没有分配或释放或错误代码。
现代 C++ 合并两个多态性:编译时,通过模板和运行时,通过继承和虚拟化。 可以混合使用这两个多态性到大的影响。 STL 模板 shared_ptr 使用内部虚方法完成其清单未费力的类型抹除。 该模板是更好的选择时,但是,不要过度使用多态性的虚拟化。 模板可以非常强大。
如果到达 C++ "自另一种语言,尤其是从大多数类型引用类型的一种托管语言和极少数是值类型,了解默认情况下选件 C++ 类是值类型。 但是,您可以指定这些引用启用支持面向对象编程的多态行为的类型。 一个有用的角度:值类型更多有关内存,并窗体控件,引用类型是更多有关基类和虚函数支持多态性。 默认情况下,每个具有复制构造函数和一复制赋值运算符的值类型是 copyable 它们。 当指定引用类型,使选件类非 copyable 禁用复制构造函数和复制赋值运算符和使用虚拟析构函数,支持多态性。 值类型也是有关目录,那么,当将其复制时,提供了两个独立的值可以单独地修改。 但是,请引用类型是有关标识哪些有点儿对象是和因此有时称为多态类型。
因为幂同样,是手 C++ 经历新生。 如 Java 的语言和 C# 比较好,当程序员效率很重要时,但是,它们显示其限制,在功能和性能是至高无上时。 对于高效率和功能,特别是在有限的硬件的计算机,没有调用现代 C++。
不仅该语言是现代的,开发工具是,还为。 Visual Studio 使所有部件开发周期的更可靠并且有效。 它包括应用程序生存周期管理 (ALM) 工具、IDE 改进与 IntelliSense,工具友好的结构与 XAML 和生成,调试和许多其他工具。
文档中的此部分中的文章为最重要的功能提供高级教程和写入现代 C++ 程序的最优方法和技术。