名字修饰
C++语言并没有规定一个标准的名字修饰方式，所以各款编译器都使用各自的名字修饰方式。C++还有一套复杂的语言特性，例如类、模板、命名空间和运算符重载。这改变了基于上下文或用法的特定符号的意义。关于这些特性的元数据能够用改编（修饰）调试符号的名字来消除二义性。正因为这些特性的名字修饰系统并没有跨编译器标准化，所以几乎没有链接器可以链接不同编译器产生的目标代码。
异常处理
许多常见的程序设计语言，包括Actionscript，Ada，BlitzMax，C++，C#，D，ECMAScript，Eiffel，Java，ML，Object Pascal（如Delphi，Free Pascal等），Objective-C，OCaml，PHP（version 5），PL/I，Prolog，Python，REALbasic，Ruby，Visual Prolog以及大多数.NET程序设计语言，内建的异常机制都是沿着函数-{zh-hans:调用栈;zh-hant:呼叫堆疊}-的函数调用逆向搜索，直到遇到异常处理代码为止。一般在这个异常处理代码的搜索过程中逐级完成-{zh-hans:栈卷回;zh-hant:堆疊輾轉開解;}-（stack unwinding）。但Common Lisp是个例外，它不采取-{zh-hans:栈卷回;zh-hant:堆疊輾轉開解;}-，因此允许异常处理完后在抛出异常的代码处原地恢复执行。而 Visual Basic（尤其是在其早于 .net 的版本，例如 6.0 中）走得更远：codice_18 语句可轻易指定发生异常后是重试（codice_19）还是跳过（codice_20）还是执行程序员定义的错误处理程序（codice_21）。
C++托管扩展
与此同时，托管C++引入了大量的关键字和语义转换，减少了代码的可读性和明确性。缺少在很多语言中都支持的泛型和for each语句也增加了其他语言的程序员转向托管C++的困难。在其后继者C++/CLI中泛型和for each语句才被支持。
星期中的日子
计算机软件设计时为了适应各国各地区的各种不同细节，使用区域设置技术来使得这些细节对程序设计透明化。即同样的源程序产生的输出能自动遵循各国各地区的风格。下述C++语言程序能在Windows系统上获取当前区域的星期开始的日子：int __cdecl wmain(int argc, wchar_t* argv[])
C++11
目前的標準庫能受益於C++11新增的一些語言特性。舉例來說，對於大部份的標準庫容器而言，像是搬移內含大量元素的容器，或是容器之內對元素的搬移，基於右值引用（Rvalue reference）的codice_132建構子都能優化前述動作。在適當的情況下，標準庫元件將可利用C++11的語言特性進行升級。這些語言特性包含但不局限以下所列：
C++托管扩展
優點缺點
.NET Framework泛型
C++允许程序员编写可能对模板中某些类型参数无效的代码，然后将检查该代码中是否有用作类型参数的特定类型。比如说可以在C++中编写对类型参数对象的算术运算符的函数，这样在用不支持这些运算符的类型实例化模板时出现出现错误；而泛型是不允许这样的，它则要求相应地编写类当中的代码，使他们能够满足任何约束的类型。因此唯一允许的语言构造是那些能够从约束中推导出来的结构。
C++11
這些特色存在的主要目的是為了使C++能夠更容易使用。舉凡可以增進型別安全，減少程式碼重複，不易誤用程式碼之類的。
比較C♯和Java
多种语言特色的存在是为了充分的支持应用程序在数学和金融领域计算。在这一类中，Java提供关键字strictfp可以在代码段中使浮点运算严格执行。这可以保证运算在所有的平台上都返回相同精确的结果。 与此不同C#为确保十进制小数浮点运算准确，在 codice_3类型中内嵌了这种机制。但在二进制小数浮点运算中舍弃了这种机制（codice_4, codice_5）。
C++托管扩展
C++托管扩展（Managed Extensions for C++）是对C++的一个属性和关键字的扩展，以便于在微软公司的.NET Framework进行编程。它也经常被称为托管C++。2002年由微软发布。
C++托管扩展
托管C++允许程序员编写托管代码，内存管理的工作现在可以让CLR去自动处理，访问时也增加了类型检查，减少了缓冲区溢出和内存泄漏的危险，增加了程序的稳定性，但是在性能敏感的应用中，庞大的.NET框架和缓慢的自动内存管理并不是必要的，传统非托管代码仍然是一些人的首选。
内省 (计算机科学)
C++通过執行期型態訊息（RTTI）的codice_1和codice_2关键字支持类型内省。codice_2的例子：
Modula-3
Modula-3的设计者认为：始自BCPL的C语言家族，其优美在于以适度的代价得到了相对汇编语言的巨大飞跃，但它们接近于目标机器的低层是天然有危险性的；其中的衍生语言C++，通过增加对象丰富了C，但它放弃了C的最佳优点简单性，却没有消除它最差缺点即低层编程模型。另一个极端是LISP语言家族，它们有着混合了lambda演算和配对函数理论的，但它们趋于难以高效实现，因为在编程模型中值的统一对待，招致了所有的值都由指针统一表示的运行时间系统；这个家族的语言的良好实现避免了多数代价而能用于系统编程，但它们普遍秉性仍旧向往堆分配而非栈分配，这种运行时间系统经常将它们孤立于封闭环境中，而不能容纳用其他语言写的程序。
C++
一個常見的混淆其實只是一個微妙的術語問題：由於它的演化來自C，在C++中的術語对象和C語言一樣是意味著記憶體區域，而不是-{zh:類別;zh-tw:類別;zh-cn:类}-的實體，在其它絕大多數的物件導向語言也是如此。舉例來說，在C和C++中，語句codice_14定義一個codice_15型別的物件，這就是變數的值codice_16將在指派時，所存入的記憶體區域。
C++14
Ada、D语言、Java、Perl、Ruby等程序设计语言使用下划线（_）作为数字分位符号，C++之所以不和它们保持一致，是因为下划线已被用在用户自定义的字面量的语法中。
C++异常处理
Microsoft Visual C++接受但暂不支持C++标准中的函数的异常规格。即使使用了编译器选项/D1ESrt，函数抛出不在其异常规格中的其他类型异常时，不会自动调用unexpected()，而是在该函数调用点处的codice_4处理。在Visual C++的函数名字修饰（name mangling）中，函数的形参的类型都编码入被修饰后的函数名字中；但是函数的异常说明中的类型都没有编码入被修饰后的函数名字中。
C++11
標準C++從C帶來了（initializer list）的概念。這個構想是結構或是数组能夠依據成員在該結構內定義的順序透過給予的一串引數來產生。這些是遞迴的，所以結構的数组或是包含其他結構的結構可以使用它們。這對靜態列表或是僅是把結構初始化為某值而言相當有用。C++有构造函数，能夠重複对象的初始化。但單單只有那樣並不足以取代這項特色的所有機能。在C++03中，只允許在嚴格遵守POD的定義和限制條件的結構及類別上使用這項機能，非POD的型別不能使用，就連相當有用的STL容器std::vector也不行。
List (STL)
list 是C++標準程式庫中的一個類，可以簡單視之為雙向連結串列，以線性列的方式管理物件集合。list 的特色是在集合的任何位置增加或刪除元素都很快，但是不支持隨機存取。list 是C++標準程式庫提供的眾多容器（container）之一，除此之外還有vector、set、map、…等等。list 以模板方式實現(即泛型)，可以處理任意型別的變數，包括使用者自定義的資料型態，例如：它可以是一個放置整數（int）型態的 list、也可以是放置字串（char 或 string）型態的 list、或者放置使用者自定類別（user-defined class）的 list。
统一访问原则
C++既不支持统一访问原则也不支持属性。当从对字段的直接访问变为一对函数()，任何对该对象属性的访问 ( 或 ) 必须改为函数调用： ( 或 ). 使用模板或者运算符重载可能作出属性的效果，但非常复杂，不是语言的直接支持。 JavaScript从2009年开始支持计算属性.
Java和C++的對照
C++和Java语言之间的不同可以追溯到它們各自的傳統，它們有着不同的設計目標。
C++/CX
generic
C++托管扩展
缺點
BETA (编程语言)
这个语言的主要和独特的特征是模式的概念。在其他编程语言比如C++中，可能有很多类和过程。BETA使用模式来表达二者概念。
Visual C++名字修饰
对于支持重载(overload)的程序设计语言，name mangling是必需的因而具有特别重要意义。C++允许函数重载 int foo(int i); void foo(char c); C++也允许变量名称在不同限定（qualifier)下同名： std::cout; 因此C++的编译器必须给这些函数及变量不同的名字以供程序编译链接、载入时的内部辨别使用。
C++
C++支持多繼承（，）。多繼承（，）的優缺點一直廣為使用者所爭議，許多語言（如Java）並不支援多重繼承，而改以單一繼承和介面繼承（），而另一些語言则采用用單一繼承和混入（）。C++通过虛繼承（）来解決多繼承带来的一系列问题。
Notepad2
Notepad2为以下的程序语言提供语法高亮标-{注}-：ASP、C语言、C++、C#、CGI、CSS、HTML、Java、JavaScript、NSIS、Pascal、Perl、PHP、Python、SQL、VB、VBScript、XHTML、XML以及汇编语言。它亦支持部分文本格式的语法高亮标-{注}-：BAT、DIFF、INF、INI、REG等。
协议 (面向对象程序设计)
一些编程语言直接支持协议或者接口 (Objective-C, Java, C#, D, Ada, Logtalk)，而早期的语言可能也有支持接口概念的特性，比如 C++中抽象基类里的纯虚函数，和 Perl里的面向对象特征。
String (C++标准库)
codice_1本质上是以字符作为元素的vector特化版本；不存在0字符结尾这个概念，能装入'\0'这种数据。 codice_2类模板存储且操纵类似char的对象的序列。该对象类型的性质由特性类模板std::char_traits的实例来提供，并作为codice_2的第二个模板参数。
动态链接库
微软Visual C++（MSVC）提供了许多标准C++的扩展，它允许直接在C++代码中将函数（类、数据变量）声明为输入或输出；这种做法已经被Windows平台上其他的C和C++编译器采纳，包括Windows平台上的GCC。这种扩展在函数声明前使用codice_29属性：
模板 (C++)
模板是C++程序员绝佳的武器，特別是結合了多重继承与运算符重载之后。C++的标准函数库提供的许多有用的函数大多結合了模板的概念，如STL以及iostream。 模板定义以关键字codice_1开始，后接模板形参表（template parameter list），模板形参表是用尖括号括住的一个或者多个模板形参的列表，形参之间以逗号分隔。模板形参可以是表示类型的类型形参（type parameter），也可以是表示常量表达式的非类型形参（non-type parameter）。非类型形参跟在类型说明符之后声明。类型形参跟在关键字class或typename之后声明。模板形参可以给出默认值（default arguments for template parameters）。
类成员函数指针
Microsoft Visual C++编译器支持在虚继承关系下的成员函数指针的upcast。这大大复杂化了该编译器的成员函数指针的实现。Visual C++定义了三个关键字：codice_11分别对应于类是单继承、多重继承、虚继承关系；此外还有第四种情况：类在提前声明（forward declaration）时的未知类型（unknown）成员函数指针。上述四种情况，Visual C++编译出的32位程序的成员函数指针长度分别是4字节、8字节、12字节、16字节。上述3个继承关系关键字用于在类定义时，显式规定该类的成员函数指针的长度及保存在其中的信息类别。如果在一个源文件（编译单元）中在没有一个类的定义的情况下调用了该类的未知类型（unknown）成员函数指针，显然必须在其他源文件中对该未知类型（unknown）成员函数指针给出类型定义并赋值，这就必须使用编译选项codice_12来编译此源文件。codice_12编译选项使得编译单元中所有的类成员函数指针均为四倍尺寸。可以用上述3个Microsoft定义的继承关系关键字把那些不是未知类型的成员函数指针显式地给出其类继承关系是单继承、多继承、虚继承，从而使该类的成员函数指针分别是单倍、二倍、三倍的尺寸。
C♯
针对于.NET SDK 2.0（相对应于ECMA-334标准第三版），C# 的新特性有：
C++
C++這個名字是Rick Mascitti於1983年中所建議的，並於1983年12月首次使用。更早以前，尚在研究階段的發展中語言曾被稱為「」，之後是「」。在電腦科學中，C++仍被稱為C語言的上層結構。它最後得名於C語言中的「++」運算子（其對變數的值進行遞增）。而且在共同的命名約定中，使用「+」以表示增強的程式。斯特劳斯特鲁普說：「這個名字象徵著源自於C語言變化的自然演進」。C+是一個和C/C++無關的早期程式語言。
C++托管扩展
在面向对象编程方面，主要的变化是对多重继承的限制，这是因为CLR的限制和内存管理的需要。一个托管类不能多继承基类。同时，类属性和微软中间语言（MSIL）的引入也使得托管类可以在其他语言中使用和继承。
C++/CX
所有WinRT程序都通过元数据来描述其中的类型。元数据的格式和通用语言架构(CLI)为.NET Framework规定的标准一致。这个特性使得C++/CX、CLI语言和Javascript的代码可以互相引用。
面向对象程序设计
面向对象程序设计在80年代成为了一种主导思想，这主要应归功于C++——C语言的扩充版。在图形用户界面（GUI）日渐崛起的情况下，面向对象程序设计很好地适应了潮流。GUI和面向对象程序设计的紧密关联在Mac OS X中可见一斑。Mac OS X是由Objective-C语言写成的，这一语言是一个仿Smalltalk的C语言扩充版。面向对象程序设计的思想也使事件处理式的程序设计更加广泛被应用（虽然这一概念并非仅存在于面向对象程序设计）。一种说法是，GUI的引入极大地推动了面向对象程序设计的发展。
C语言
见C和C++运算符。
Objective-C
Objective-C最大的特色是承自Smalltalk的訊息傳遞模型（message passing），此機制與今日C++式之主流風格差異甚大。Objective-C裡，與其說物件互相呼叫方法，不如說物件之間互相傳遞訊息更為精確。此二種風格的主要差異在於"呼叫方法/訊息傳遞"這個動作。C++裡類別與方法的關係嚴格清楚，一個方法必定屬於一個類別，而且在編譯時（compile time）就已經緊密綁定，不可能呼叫一個不存在類別裡的方法。但在Objective-C，類別與訊息的關係比較鬆散，呼叫方法視為對物件"發送訊息"，所有方法都被視為"對訊息的回應"。所有訊息處理直到執行時（runtime）才會動態決定，並交由類別自行決定如何處理收到的訊息。也就是說，一個類別不保證一定會回應收到的訊息，如果類別收到了一個無法處理的訊息，程式只會拋出异常，不會出錯或崩潰。
C++
封裝（）是將資料和處理資料的程序（）組合起來，僅對外公開接口（），达到信息隐藏（）的功能。封裝的優點是能減少耦合（）。C++、、C# 等語言定義对象都是在語法中明確地使用類別（）來做到封裝。
C++
此前C语言并不支持这样的用法，直到C99允许用变量作为数组长度（需要注意的是C99中的支持运行期确定数组长度，但C++从未支持）。此外，C++中，命名空间作用域的对象的名称隐含内部链接。这意味着直接在头文件里定义对象被多个源文件包含时，也不会重定义。
闭包 (计算机科学)
C++11标准已经支持了闭包，这是一种特殊的函数对象，由特殊的语言结构——lambda表达式自动构建。C++闭包中保存了其代码内全部向外引用的变量的拷贝或引用。如果是对外界环境中的对象的引用，且闭包执行时该外界环境的变量已经不存在（如在调用栈上已经展开），那么可导致未定义行为，因为C++并不扩展这些被引用的外界环境的变量的生命期。示例代码如下： void foo(string myname) {
程式語言歷史
1980年代的程式語言與之前相較顯得更為強大。C++合併了物件導向以及系統程式設計。美國政府標準化一種名為Ada的系統程式語言並提供給國防承包商使用。日本以及其他地方運用了大量的資金對採用邏輯程式語言結構的第五代程式語言進行研究。函數程式語言社群則把焦點轉移到標準化ML及Lisp身上。這些活動都不是在開發新的範式，而是在將上個世代發明的構想進一步發揚光大。
函数对象
除了类类型函数对象，还有其他类型的函数对象，如使用成员函数指针或模板。C++11允许使用具有闭包功能的匿名函数。 C++的STL中的众多algorithm，非常依赖于函数对象处理容器的元素。因此，STL预定义了许多函数对象、谓词（predicate）、以及用于复合（composite）函数对象的binder、member function adapter、 pointer to function adapters、 negaters、 function objects base structure。由于STL中的algorithm使用函数对象作为参数时，一般都是传值调用，所以函数对象应该仔细设计其"复制构造函数"。 C++98在头文件functional中定义了下述函数对象: plus() 结果为(param1 + param2) minus() 结果为(param1 - param2) multiplies() 结果为(param1 * param2) divides() 结果为(param1 / param2) modulus() 结果为(param1 % param2) 返回布尔值（或者可以隐式转换为布尔值）的函数对象。用于STL中的algorithm时，谓词应该是无状态的（ stateless）函数对象，即谓词的结果不依赖于内部的数据成员。这是因为STL中的algorithm不保证内部实现时对传入的谓词要复制多少次。 C++98在头文件functional中定义了下述谓词: 用于组合（combine）、变换（transform）、操作（manipulate）函数对象、特定参数值、或者特定函数。进一步细分为： C++98在头文件functional中定义了两个函数bind1st与bind2nd，返回值为binder1st、binder2nd类型。用于把二元函数对象分别绑定第一个、第二个参数后成为单元函数对象。 negate把一个作为谓词的函数对象取反。C++98在头文件functional中定义了两个函数not1与not2，返回值为unary_negate、binary_negate类型。 Member function adapter用于把类的成员函数用作STL中的algorithm的参数。C++98在头文件functional中定义了:
C++类
C++语法试图使一个结构的所有方面看起来像一个基本数据类型。因此，运算符重载允许结构像整数和浮点数一样操作，结构的数组可以通过方括号声明（codice_68），而且指向结构的指针可以通过和指向内置类型的指针通用的方法解引用。
构造器
某些语言 (Java, C#, VB .NET) 会缺省构造由该类类型定义的数组，使其充满空值引用。没有空值引用的语言一般会禁止缺省构造包含不可缺省构造对象的数组，或者要求在建立时专门初始化这些数值 (C++):
C♯
C#的发音为“C sharp”，“#”读作“sharp”（），命名启发于音乐上的音名“C♯”，在音乐中“C♯”表示C升半音，為比C高一点的音节，且“#”形似4个加号，微软借助这样的命名，以表示C#在一些语言特性方面对C++的提升的意思。
C♯
C#是微软推出的一种基于.NET框架的、面向对象的高级编程语言。C#是一种由C和C++衍生出来的面向对象的编程语言。它在继承C和C++强大功能的同时去掉了一些它们的复杂特性，使其成为C语言家族中的一种高效强大的编程语言。C#以.NET框架类库作为基础，拥有类似Visual Basic的快速开发能力。C#由安德斯·海尔斯伯格主持开发，微软在2000年发布了这种语言，希望借助这种语言来取代Java。C#已经成为Ecma国际和国际标准组织的标准规范。
Microsoft Visual C++
Visual C++的前身是Microsoft C/C++。还有相关产品："Microsoft QuickC" 2.5 与"Microsoft Quick C for Windows" 1.0. Visual C++ 编译器仍然叫做"Microsoft C/C++"。例如Visual C++ 2015 Update 2的版本号是19.00.23918. 在Visual C++ 2012以前，完全不支持C99与C11的新特性，仅支持1989年版的ANSI C。Visual C++ 2012开始在C模式下支持C99的部分特性，如designated initializers、compound literals、codice_2类型。Visual C++ 2013很大改进了对C99特性的支持。 Visual C++ 2015基本上完整支持了C99标准库，但需要编译器尚未支持的C99语言特性的那部分标准库除外。 至VC++2017 Version 15.7已经完全实现了C++17
字符串
某些语言如C++把字符串实现为可以用于任何基本类型的模版，但这是个例外而不是规则。
通用中间语言
通用中间语言（Common Intermediate Language，簡稱CIL，发音为"sill"或"kill"）是一种属于通用语言架构和.NET框架的低階（lowest-level）的人类可读的编程语言。目标为.NET框架的语言被编译成CIL，然后汇编成字节码。CIL类似一个面向对象的組合语言，并且它是完全基于堆栈的。它运行在虚拟机上，其主要的语言有C#、Visual Basic .NET(VB.NET)、C++/CLI以及J#。
C++14
以下为在C++14中被加入语言核心的特性。 在C++11中，lambda函数的形式参数需要被声明为具体的类型。C++14放宽了这一要求，允许lambda函数的形式参数声明中使用类型说明符codice_1。
C++
比雅尼·史特勞斯特魯普（）工作起於1979年的。這個構思起源於斯特劳斯特鲁普做博士論文時的一些程式撰寫經驗。他發現Simula具備很利於大型軟體開發的特點，但的執行速度太慢，無法對現實需求發揮功效；BCPL雖快得多，但它過於低階的特性，使其不適於大型軟體的開發。當斯特劳斯特鲁普開始在貝爾實驗室工作時，他有分析UNIX核心關於分散式計算的問題。回想起他的博士論文經驗，斯特劳斯特鲁普開始為C語言增強一些類似的特點。之所以選擇C，是因為它適於各種用途、快速和可移植性。除了C和Simula之外，同時也從其它語言中取得靈感，如ALGOL 68、Ada、CLU以及ML。
POD (程序设计)
其它与POD相关的C++特性: "POD-struct ... types are layout-compatible if they have the same number of members, and corresponding members (in order) have layout-compatible types". POD-union ... types are layout-compatible if they have the same number of members, and corresponding members (in any order) have layout-compatible types".
Typename
"codice_1"是一个C++程序设计语言中的关键字。当用于泛型编程时是另一术语"codice_2"的同义词。在第一版 ISO 标准完成之前的原始 C++ 编译器中，codice_1关键字还不是 C++ 语言的一部分，当时Bjarne Stroustrup 使用codice_2关键字作为模板参数。现在codice_1是首选关键字，但较旧的源代码可能仍会看到使用codice_2关键字（例如，参见 Bjarne Stroustrup 于 1994 年出版的《The Design and Evolution of C++》与 Bjarne Stroustrup 于 2013 年出版的《The C++ Programming Language: Four Edition》中的源代码示例之间的差异）。这个关键字用于指出模板声明（或定义）中的非独立名称（dependent names）是类型名，而非变量名。以下是对于泛型编程中codice_1两种迥然不同的用法的解释。
Objective-C
此二種風格各有優劣。C++強制要求所有的方法都必須有對應的動作，且編譯期綁定使得函數呼叫非常快速。缺點是僅能藉由virtual關鍵字提供有限的動態綁定能力。Objective-C天生即具備鸭子类型之動態綁定能力，因為執行期才處理訊息，允許傳送未知訊息給物件。可以送訊息給整個物件集合而不需要一一檢查每個物件的型態，也具備消息轉送機制。同時空物件nil接受訊息後默認為不做事，所以送訊息給nil也不用擔心程序崩潰。
C++ Technical Report 1
int main()以下四個模組被加進codice_2標頭檔之中：C++被設計成與C語言兼容，但由於不同的標準，C++並不是C的嚴格超集合。TR1試圖調和這些差異，透過對各種標頭檔，如、、等進行擴充。 這些改變幫助C++能夠與C99版本的C標準更為一致（並非所有C99都包含於TR1）。
C++
C++語言發展大概可以分為三個階段：第一階段從80年代到1995年。這一階段C++語言基本上是傳統類型上的面向对象語言，並且憑藉着接近C語言的效率，在工業界使用的開發語言中佔據了相當大份額；第二階段從1995年到2000年，這一階段由於標準模板庫（）和後來的Boost等程式庫的出現，泛型程序設計在C++中佔據了越來越多的比重。當然，同時由於Java、C#等語言的出現和硬體價格的大規模下降，C++受到了一定的衝擊；第三階段從2000年至今，由於以Loki、MPL(Boost)等程式庫為代表的產生式編程和模板元編程的出現，C++出現了發展歷史上又一個新的高峰，這些新技術的出現以及和原有技術的融合，使C++已經成為當今主流程序設計語言中最複雜的一員。
C♯
泛型，或参数化类型，是被C#支持的.NET 2.0特性。不同于C++模版，.NET参数化类型是在运行时被实例化，而不是编译时，因此它可以跨语言，而C++模版却不行。它支持的一些特性并不被C++模版直接支持，比如约束泛型参数实现一个接口。另一方面，C# 不支持无类型的泛型参数。不像Java中的泛型，在CLI虚拟机中，.NET generics使用具化生成泛型参数，它允许优化和保存类型信息。
Microsoft Visual C++
Microsoft Visual C++（简称Visual C++、MSVC、VC++或VC）是微軟公司的C++開發工具，具有集成开发环境，可提供編輯C語言，C++以及C++/CLI等编程語言。VC++整合了便利的除錯工具，特別是整合了微軟Windows视窗操作系统应用程序接口（Windows API）、三维動畫DirectX API，Microsoft .NET框架。目前最新的版本是Microsoft Visual C++ 2022。
C++类
在 C++ 中，结构体 是由关键词 codice_1 定义的一种数据类型ISO/IEC (2003). "ISO/IEC 14882:2003(E): Programming Languages - C++ §9 Classes [class]" para. 4。他的成员和基类默认为公有的（public）。由关键词 codice_2 定义的成员和基类默认为私有的（private）。这是C++中结构体和类仅有的区别。
執行期型態訊息
C++语言提供了dynamic_cast和typeid两种运算符，typeid用于在运行时识别类型信息，dynamic_cast具有运行时类型识别和类型转换匹配2个功能。实现方法为每个类型对应一个const type_info类型对象，存储了这个确切类型信息。在C++标准头文件codice_3中，type_info类重载了operator=()、operator!=()、name()等成员函数。
C++
1983年，改命名為C++（codice_1是C语言中的增值操作符）。加入了新的特性，其中包括虛擬函式、函式名和運算子多載、參考、常數、使用者可控制的自由空間儲存區控制、改良的型別檢查，以及新的雙斜線（codice_2）單行註解風格。
字面常量 (C语言)
相邻的两个字符串将被编译器自动连接为一个字符串。如： 枚举类型实质上是取有限个值的整型。根据C与C++98标准，枚举常量属于定义了枚举类型的那个作用域，而不属于这个枚举类型的内部作用域。C++发明人Bjarne Stroustrup称之为枚举常量的作用域不受限（unscoped）现象，这会造成命名冲突，与枚举常量是“有类型的常量”的初衷不符，与面向对象程序设计的原则严重相悖。例如：
C++异常处理
事实上，异常规格这一特性在程序中很少被使用，因此在C++11中被弃用。C++11定义了新的noexcept关键字。如果在函数声明后直接加上noexcept关键字，表示函数不会抛出异常。另外一种形式是noexcept关键字后跟常量表达式，其值转为布尔值，如果为真表示函数不会抛出异常，反之，则有可能抛出异常。 如果保证不抛出异常的函数却实际上抛出异常，则会直接调用std::terminate中断程序的执行。
Embedded C++
Embedded C++是嵌入式系统上使用的一种C++方言，由日本CPU大廠NEC、日立、富士通、东芝于1996年提出，也可以缩写作EC++。提出这一方言的目的是在保持C++语言面向对象特性的同时，尽可能减小代码、提升执行效率、简化编译器。
C++11
在第一個例子中，任何包含在codice_102 codice_103括號（標準已經從codice_104改為codice_105）當中的都是字串的一部分。其中codice_106和codice_107字元不需要經過转义。在第二個例子中，codice_108開始字串，只有在遇到codice_109才代表結束。其中codice_110可以是最多16个字符的任意的字串（包含空字符串），但不能包含空格、控制字符和'('、')'、'\'。原始字符串允許使用者使用圆括号codice_102,codice_103，例如R"delimiter((a-z))delimiter"等价于"(a-z)"。原始字串字面值能夠和寬字面值或是Unicode字面值結合： u8R"XXX(I'm a "raw UTF-8" string.)XXX" // uR"*@(This is a "raw UTF-16" string.)*@" //visual studio not support '@' uR"*(This is a "raw UTF-16" string.)*" UR"(This is a "raw UTF-32" string.)" 標準C++提供了數種字面值。字元"12.5"是能夠被編譯器解釋為數值12.5的double型別字面值。然而，加上"f"的後置，像是"12.5f"，則會產生數值為12.5的float型別字面值。之前的C++規範中字面值的修饰符是固定的，C++代碼不能創立新的字面修饰符。
Java和C++的對照
C++语言由 "ISO/IEC 14882" 定义，是一个ISO标准，由 "ISO/IEC JTC1/SC22/WG21" 委员会发布。 Java语言由 "Java Language Specification" 定义，这是一本Sun公司（已被甲骨文收購）出版的书。
C++
C++為類別構成式物件導向程式設計語言（），類別概念具現化（）地作為二等公民（）出現在C++語言當中，在語法中明確地使用類別來做到資料抽象化、封裝、模組化、繼承、子型別多型、物件狀態的自動初始化。C++中，一個類別即為一個型別，加上封裝，一個類別即為一個抽象資料型別（，），繼承、多型、模板都加強了類別的可抽象性。在C++可以使用或這兩個關鍵字宣告類別（），而使用運算子實體化類別產生的實體（）即為物件，是一等公民。C/C++以資料成員（）表達屬性，以成員函式（）表達行為。
组件对象模型
与C++不同，COM提供了一个稳定的应用二进制接口（ABI），不随编译器版本而改变 。 早在1988年，微软的Anthony Williams的论文“Object Architecture: Dealing with the Unknown or Type Safety in a Dynamically Extensible Class”以及1990年的“On Inheritance: What It Means and How To Use it”论文奠定了COM的理论基础。
C++
一个确定的观点是：C++是一门复杂的语言、这门语言拥有过多的特性从而难以彻底掌握；C++的某些库难以学习、掌握并应用于实际当中；很多程序员都认为C++是一个过度设计的程序语言。
C♯
相對於C和C++，這個語言在許多方面進行了限制和增強：
Decltype
decltype包含于当前的C++标准C++11中，并由许多编译器以扩展的形式提供：微软在Visual C++ 2010编译器中提供了decltype操作符，基本实现了标准委员会提案中所描述的语义，并且在托管代码或原生代码中都可使用。据其文档称，这一实现“主要对编写模板库的开发者有用。”从2008年3月5日发布的4.3版开始，GCC C++编译器也加入了decltype操作符。这一操作符也已纳入了的C++ Builder 2009、Intel C++编译器与Clang。
C++托管扩展
托管C++并非独立存在的编程语言，而仅仅是微软对C++的一个语法扩展，允许C++程序员在.NET框架和CLR的基础上进行托管编程。与C#和Visual Basic .NET相比，其主要优点是旧代码可以比较快地移植到新的平台上，而且即使不完全重写代码，也可以通过互操作在同一个模块中无缝整合托管和非托管代码，从新的.Net框架中获益。
Java和C++的對照
C++ 是一門強大的語言，設計用在系統程式設計方面。Java語言是設計成簡單易用易學習，并有一個強大的跨平台的庫。Java函式庫對一個函式庫來說相當的大。但Java并不會提供所在平台的所有特性和接口。C++函式庫簡單健壯，提供容器和關聯數組的支持。
大小写敏感性
一些编程语言是大小写敏感的，例如Java、C++、C♯, C语言, Ruby以及XML)。其他的编程语言则并不是大小写敏感的，例如大多数BASIC（除了BBC BASIC）、Fortran、SQL和Pascal。同时，在Haskell、Prolog和Go这些语言，大写字母的标识符可以进行形式语义学的编码。
C++
在物件導向物件程式設計術語中，物件（）是資料（）和處理資料的指令（）的聯合（）。模擬（）實際世界（），物件有三種特質（）：狀態（）、行為（）、，並且使用訊息（）來引發彼此的互動。類別（）為物件的藍圖或工廠，定義了物件的抽象特質，包括物件的屬性特質和物件的行為特質，屬性的值即是物件的狀態，行為即是物件能夠做的事。
Microsoft Visual C++
Visual C++以拥有语法高亮、IntelliSense（智能提示）以及高级调试功能而著称。比如，它允许用户进行远程调试，单步执行等。还有允许用户在调试期间重新编译被修改的代码，而不必重新启动正在调试的程序。其编译及创建預編譯頭文件（codice_1）、最小重建功能及累加連結（link）著稱。這些特徵明顯縮短程式編輯、編譯及連結的時間花費，在大型軟體計畫上尤其顯著。 Visual C++被整合在Visual Studio之中，但仍可單獨安裝使用。
属性 (编程)
一些面向对象语言，如Java与C++，不支持属性，而要求编程者写一对accessor与mutator方法。 C++可以通过运算符重载来模拟属性。
内省 (计算机科学)
在计算机科学中，内省是指计算机程序在运行时（）检查对象（）类型的一种能力，通常也可以称作“运行时类型检查"。一些编程语言如C++、Java、Ruby、PHP、Objective-C、Perl等等具有这种特性。
C++托管扩展
来使用 Windows Forms。/clr enables any code referencing the .NET Framework to be compiled as CIL。以下列出 Managed C++ 與其它程式語言在類似觀念上的差異。
Java和C++的對照
C++ 和 Java 都提供泛型编程的能力，分别是模板 和 泛型(). 虽然它们被创造用来解决类似的问题，有类似的语法，但实际上很不一样.想运行一个编译好的 Java 程序，计算机上要运行JVM；而编译好的 C++ 程序不需要额外的应用。比较早期的 Java 版本在性能上比静态编译的语言如 C++ 差得很多，这是因为用 C++ 是直接编译成一些机器指令，而当 Java 编译成字节码以后用 JVM 解释执行的时候又牵涉了不少额外的机器指令。 例如： C++ 在大部分的情况下都比 Java 要快， 有几个数值方面的基准测试的研究争辩说 Java 在某些情况下可能会比 C++ 的性能好得多。 但有人说数值方面的基准测试对于语言的评估是不合适的，因为编译器都可以做相关的优化，甚至可能将被测试的代码彻底删除。 如果涉及到一个真正现实应用的程序，Java 会因为很多原因导致性能变差：
头等函数
现代指令式编程语言由于有垃圾收集功能而使得头等函数成为可能。很多语言的后续版本开始支持头等函数，如C# 2.0，Apple公司的C、C++与Objective-C的Block扩展。C++11开始支持了匿名函数与闭包。
Visual C++名字修饰
C++语言由于含有大量复杂的语言特性，如classes, templates, namespaces, operator overloading等，这使得对象的名字在不同使用上下文中具有不同的意义。所以C++的name mangling非常复杂。
C++11
標準C函式宣告語法對於C語言已經足夠。演化自C的C++除了C的基礎語法外，又擴充額外的語法。然而，當C++變得更為複雜時，它暴露出許多語法上的限制，特別是針對函數模板的宣告。下面的範例，不是合法的C++03： template< typename LHS, typename RHS>  Ret的型別由LHS與RHS相加之後的結果的型別來決定。即使使用C++11新加入的decltype來宣告AddingFunc的返回型別，依然不可行。 template< typename LHS, typename RHS>  不合法的原因在於lhs及rhs在定義前就出現了。直到剖析器解析到函數原型的後半部，lhs與rhs才是有意義的。
值 (電腦科學)
C++语言引入了const限定的对象。const对象可以取地址，但是不能被赋值；而一些右值对象也可以出现在赋值号的左边被赋值。因此，截至C++03标准，把具有标识（identity）的表达式规定为左值，不具有标识的表达式规定为右值。因而，名字、指针、引用等是左值，是命名对象，具有确定的内存地址；字面量、临时对象等为右值，右值仅在创建它的表达式中可以被访问。函数名字是左值（在C语言中规定它既不是左值也不是右值），数组名是常量左值，但是在大多数表达式中函数名字与数组名字自动隐式转换为右值。右值的生存期短暂，所以需要用左值去捕捉右值。把右值复制（copy）到左值上是常见操作。
编程范型
编程范型和编程语言之间的关系可能十分复杂，由于一个编程语言可以支持多种范型。例如，C++设计时，支持过程式编程、面向对象编程以及泛型编程。然而，设计师和程序员们要考虑如何使用这些范型元素来构建一个程序。一个人可以用C++写出一个完全过程化的程序，另一个人也可以用C++写出一个纯粹的面向对象程序，甚至还有人可以写出杂揉了两种范型的程序。
C♯
原Borland公司的首席研发设计师安德斯·海爾斯伯格（Anders Hejlsberg）在微軟開發了Visual J++ 1.0，很快的Visual J++由1.1版本升級到6.0版。SUN公司认为Visual J++ 违反了Java开发平台的中立性，对微软提出了诉讼。2000年6月26日微软在奥兰多举行的“职业开发人员技术大会”（PDC 2000）上，發表新的语言C#。C#语言取代了Visual J++，語言本身深受Visual Basic、Java、C和C++ 的影響。
Visual C++名字修饰
C++的编译器可大略分为Windows平台上的Microsoft Visual C++与类Unix平台上的GNU CC/g++两大类，分别成了各自操作系统环境下的业界工业标准。例如，Windows平台上的Intel C++ Compiler（ICC）与Digital Mars C++，都与Visual C++保持了二进制兼容(Application Binary Interface, ABI)。而Linux平台上的Intel C++ Compiler（ICC）与HP aC++，都与GCC 3.x/4.x做到二进制兼容。GCC是开源产品，它的内部实现机制是公开的；而Visual C++不公开它内部实现细节，因此在name mangling上并无详尽的正式文档，Visual C++ name mangling的细节属于hacker行为。
标准模板库
事實上，C++的模板，本身即是一套複雜的巨集語言（macro language），巨集語言最大的特色為：所有工作在編譯時期就已完成。显式的声明函數模板之实例，與直接透過C++的多載功能隱式声明，結果一樣，並無很大區別，只是前者加重程序员的負擔，使得程式變得累贅。
Embedded C++
Embedded C++ 是C++的子集合。有某些C++的特性被移除：
C++/CLI
回到MC++，有两类指针：用__nogc标识的指针是传统意义上的C++指针，而用__gc标识的指针为.NET中的引用。但在C++/CLI里，唯一的指针就是传统意义上的C++指针，而.NET引用类型使用一个“句柄”来获取，使用新的语法“类名^”代替了MC++的“类名*”。新的句法使得托管和非托管代码混合开发更加方便；它指明了对象将会被垃圾回收器自动销毁还是手动销毁。
C++11
C++本來就已具備常數表示式（constant expression）的概念。像是codice_14總是會產生相同的結果並且沒有任何的副作用。常數表示式對編譯器來說是最佳化的機會，編譯器時常在編譯期執行它們並且將值存入程式中。同樣地，在許多場合下，C++規格要求使用常數表示式。例如在陣列大小的定義上，以及列舉值（enumerator values）都要求必須是常數表示式。
不透明指针
在程序设计中，不透明指针（Opaque pointer）是的一种特殊情况，这种資料類型被声明为指向某种未指定类型的记录或数据结构的指针。不透明指针存在于、C语言、C++、D語言和Modula-2 等多种编程语言中
Visual C++名字修饰
codice_13可以有0个或多个前缀: 指针变量的__based()属性是Microsoft的C++语言扩展. 这一属性编码为: 例如： int *pBased; // mangled name: ?pBased@@3PAHA  int __based(pBased) * pBasedPtr; // 需要注意Visual C++编译器把这个指针变量的声明解释为： // (int __based(pBased) * __based(pBased) pBasedPtr) // 因此其mangled name: ?pBasedPtr@@3PM2pBased@@HM21@  // 其中PM2pBased@@表示这是基于的指针；HM21表示是基于“1”的整型指针， // “1”是重复出现的名字的编号简写，这里就是指pBased@  int __based(void) *pbc; // mangled name: ?pbc@@3PM0HM0 其中的0表示这是__based(void).  // 编译器把该变量声明解释为(int __based(void) * __based(void) pbc)
C++
事实上，对于C++语言的批评并不只来源于系统下的程序员。就像C++语言本身是一个跨平台的语言一样，对C++的批评并不局限于系统用户。
栈追踪
包括Java和C#在内的很多编程语言都内置相关支持，可以通过系统调用获取当前的栈追踪。C++没有内置此类功能，不过C++用户可以通过第三方库获取栈追踪。JavaScript的异常中有codice_1属性，包含了抛出处的栈信息。
ML语言
$ echo 'print "Hello, world!\n";' > hello-world.sml $ mlton hello-world.sml $ ./hello-world Hello, world! 不同于纯函数式编程语言，ML是兼具一些指令式特征的函数式编程语言。ML的特征包括：传值调用的求值策略，头等函数，带有垃圾收集的自动内存管理，参数多态，静态类型，类型推论，，模式匹配和异常处理。不同于Haskell，ML与大多数编程语言一样使用及早求值。
C与C++的兼容性
C++较C语言有更严格的类型转换和初始化规则 , 因此一些在C语言里合法的语句在C++里是不合法的。ISO C++附录C.1列出了这些区别。 /*从void *到int *的隐式转换*/ int *i = ptr; 或类似的： int *j = malloc(5 * sizeof *j); /*从void *到int *的隐式转换 */ 为了使代码在C和C++中同时可用, 必须使用强制类型转换, 如下所示 (然而这样在两种语言中都会报警告)： void *ptr; int *i = (int *)ptr; int *j = (int *)malloc(5 * sizeof *j); C++中提供了其它方法来实现指针类型转换。C++不推荐继续使用老式类型转换。老式类型转换在形式上来说不是特别清晰，容易被忽略。。 void *ptr; auto i = reinterpret_cast(ptr); auto j = new int[5];
多重编程范式
多范式编程语言（Multi-paradigm programming language）是一種可以支持超過一種編程范型的程式語言。「Multi-paradigm」这个词是由比雅尼·斯特劳斯特鲁普博士在其著作中提出的，用于表述C++可以同时使用多种风格来写程序，比如面向对象和泛型编程。
Windows API
C是Windows API（Win32）的主要编程语言，在该API的文档中所公开的函数和数据结构均以该语言进行了描述。但是，如果某种编程语言能够处理（明确定义的）低级数据结构，并能按照规定进行调用与回调，那么其编译器或汇编器也可以调用Windows API。类似地，在历史上Windows API也由多种语言进行了开发。尽管C不是面向对象的编程语言，但Windows API和Windows都具有面向对象的特性；同时，也有许多面向对象语言的包装类和扩展（如微软基础类库MFC、可视化组件库VCL、GDI+等）使这种面向对象的结构更加清晰。例如，Windows 8提供的Windows API和WinRT API就是用C++实现的，并且在设计上也是面向对象的。
C++
由进行。已经出版的标准文档如下： 在《C++語言的設計和演化》（1994）中，描述了他在設計C++時，所使用的一些原則。知道這些原則有助於理解C++為何會是現在這個樣子。以下總結了一些原則，詳盡的內容可參閱《C++語言的設計和演化》：1998的C++標準分為兩個部分：核心語言和C++標準程式庫；後者包含了大部分標準模板庫和C標準程式庫的稍加修改版本。存在許多不屬於標準部分的C++程式庫，且使用外部連結，程式庫甚至可以用C撰寫。