هي لغة برمجة كائنية، وتضم العديد من ميزات لغات البرمجة عالية المستوى ومنخفصة المستوى. بدأ تطوير هذه اللغة كامتداد للغة C من قبل بيارن ستروستروب في مختبرات بل عام 1979 وتم إضافة العديد من الميزات الأخرى لاحقاً وتغير الاسم عام 1983 ليصبح ++C من باب الدعابة عبر استخدام معامل الزيادة لجانب اسم لغة C.
بدأ بيارن ستروستروب العمل على مشروعه C مع الصفوف (C with Classes) عام 1979، وقد استلهم فكرة هذا المشروع أثناء عمله على أطروحة الدكتوراه حيث قضى وقتاً طويلاً بالبرمجة. لقد اكتشف ستروستروب أن العديد من ميزات لغة Simula ملائمة في الحقيقة لتطوير برمجيات ضخمة إلا أن بطء أداء التطبيقات المكتوبة بهذه اللغة كان يحول دون استخدامها بشكل عملي، وفي الوقت نفسه كانت تتمتع اللغة BCPL بأداء جيد إلا أنها منخفضة المستوى وبالتالي يصعب استخدامها في تطوير برمجيات ضخمة، قاد هذا الاكتشاف ستروستروب إلى فكرة تطوير لغة برمجة جديدة تجمع المزايا الحسنة من هاتين اللغتين.
يقول ستروستروب: "يؤكد الاسم الطبيعة التطورية للتغيرات المحدثة على لغة C. أثناء مرحلة التطوير تم تسمية ++C بشكل غير رسمي "C الجديدة" (بالإنجليزية: new C) ثم تغير الاسم إلى "C مع الصفوف" ( C with classes). يعود الفضل في التسمية النهائية (++C) إلى ريك ماسيتي (أواسط عام 1983) وقد استخدم هذه التسمية لأول مرة في كانون الأول عام 1983. عندما سُؤل ماسيتي عام 1992 عن سبب تسمية اللغة بهذا الاسم أجاب أنه قام بذلك من باب المزاح. ويعود أصل الاسم إلى استخدام معامل الزيادة (++) من لغة C والذي يقوم بزيادة قيمة المتغير المسند له والاستخدام الشائع لرمز (+) للدلالة على حصول تحسين في برنامج حاسوبي. الدعابة تكمن في أن الاسم نفسه يحتوي على خطأ: ذلك أن استخدام الزيادة اللاحقة (بالإنجليزية: post-increment) يسبب زيادة المتحول بعد تقييم قيمة المتحول السابقة (على عكس الزيادة السابقة (بالإنجليزية: pre-increment)) بمعنى أن لغة ++C ليست أفضل من لغة C وإلا فقد كان من الأجدر استخدام الزيادة السابقة بحيث يصبح اسم اللغة C++ بدلاً من استخدام الزيادة اللاحقة كما في الاسم الحالي.
في كتاب "تصميم وتطوير لغة ++C" (ستروستروب، 1994) يصف بيارن ستروستروب بعض القواعد التي استلهم منها تصميم ++C:
في كتاب "النموذج الكائني للغة ++C" (ليبمان، 1996) يشرح الكاتب إمكانية تحويل مصرفات ++C العبارات البرمجية إلى توضعات داخل الذاكرة. إلا أن هذا لا يمنع بالطبع مصممي المصرفات من اعتماد طرقهم الخاصة في كتابة مصرفات متوافقة مع المعيار المرجعي ++C.
بدأ بيارن ستروستروب العمل على مشروعه C مع الصفوف (C with Classes) عام 1979، وقد استلهم فكرة هذا المشروع أثناء عمله على أطروحة الدكتوراه حيث قضى وقتاً طويلاً بالبرمجة. لقد اكتشف ستروستروب أن العديد من ميزات لغة Simula ملائمة في الحقيقة لتطوير برمجيات ضخمة إلا أن بطء أداء التطبيقات المكتوبة بهذه اللغة كان يحول دون استخدامها بشكل عملي، وفي الوقت نفسه كانت تتمتع اللغة BCPL بأداء جيد إلا أنها منخفضة المستوى وبالتالي يصعب استخدامها في تطوير برمجيات ضخمة، قاد هذا الاكتشاف ستروستروب إلى فكرة تطوير لغة برمجة جديدة تجمع المزايا الحسنة من هاتين اللغتين.
يقول ستروستروب: "يؤكد الاسم الطبيعة التطورية للتغيرات المحدثة على لغة C. أثناء مرحلة التطوير تم تسمية ++C بشكل غير رسمي "C الجديدة" (بالإنجليزية: new C) ثم تغير الاسم إلى "C مع الصفوف" ( C with classes). يعود الفضل في التسمية النهائية (++C) إلى ريك ماسيتي (أواسط عام 1983) وقد استخدم هذه التسمية لأول مرة في كانون الأول عام 1983. عندما سُؤل ماسيتي عام 1992 عن سبب تسمية اللغة بهذا الاسم أجاب أنه قام بذلك من باب المزاح. ويعود أصل الاسم إلى استخدام معامل الزيادة (++) من لغة C والذي يقوم بزيادة قيمة المتغير المسند له والاستخدام الشائع لرمز (+) للدلالة على حصول تحسين في برنامج حاسوبي. الدعابة تكمن في أن الاسم نفسه يحتوي على خطأ: ذلك أن استخدام الزيادة اللاحقة (بالإنجليزية: post-increment) يسبب زيادة المتحول بعد تقييم قيمة المتحول السابقة (على عكس الزيادة السابقة (بالإنجليزية: pre-increment)) بمعنى أن لغة ++C ليست أفضل من لغة C وإلا فقد كان من الأجدر استخدام الزيادة السابقة بحيث يصبح اسم اللغة C++ بدلاً من استخدام الزيادة اللاحقة كما في الاسم الحالي.
في كتاب "تصميم وتطوير لغة ++C" (ستروستروب، 1994) يصف بيارن ستروستروب بعض القواعد التي استلهم منها تصميم ++C:
- صُممت ++C كلغة عمومية، سكونية التنميط وتتمتع بفعالية ومحمولية لغة C
- صُممت ++C لتدعم بشكل مباشر وغني عدة أنماط برمجية (برمجة إجرائية، تجريد البيانات، البرمجة الكائنية والبرمجة العامة)
- صُممت ++C لتتيح المبرمج حرية الخيار حتى وإن كان اختيار المبرمج غير صحيح
- صُممت ++C بحيث تتوافق مع لغة C قدر الإمكان لتوفر بالتالي انتقالاً سلساً إليها لدى الحاجة
- تتجنب ++C الميزات الخاصة بمنصة محددة فقط وغير عمومية
- لا تحمّل ++C البرمجيات المكتوبة أعباء ميزات اللغة في حال عدم استخدامها (مبدأ العبء المعدوم)
- صممت لغة ++C كي تعمل بدون وجود بيئات تطوير معقدة
في كتاب "النموذج الكائني للغة ++C" (ليبمان، 1996) يشرح الكاتب إمكانية تحويل مصرفات ++C العبارات البرمجية إلى توضعات داخل الذاكرة. إلا أن هذا لا يمنع بالطبع مصممي المصرفات من اعتماد طرقهم الخاصة في كتابة مصرفات متوافقة مع المعيار المرجعي ++C.