C++ प्रोग्रामिंग भाषा का इतिहास 1979 से है, जब बजेर्ने स्ट्रॉस्ट्रुप अपने पीएच.डी. के लिए काम कर रहे थे। थीसिस उन्होंने "सी विद क्लासेस" पर काम शुरू किया, जैसा कि नाम से ही स्पष्ट है कि यह सी भाषा का सुपरसेट था। उनका लक्ष्य ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग को C भाषा में जोड़ना था, जो गति या निम्न-स्तरीय कार्यक्षमता का त्याग किए बिना अपनी पोर्टेबिलिटी के लिए अच्छी तरह से सम्मानित भाषा थी और अभी भी है।
उनकी भाषा में सी भाषा की सभी विशेषताओं के अलावा कक्षाएं, मूल वंशानुक्रम, इनलाइनिंग, डिफ़ॉल्ट फ़ंक्शन तर्क और मजबूत प्रकार की जाँच शामिल थी। क्लास कंपाइलर वाले पहले C को Cfront कहा जाता था, जो CPre नामक C कंपाइलर से लिया गया था। यह एक प्रोग्राम था जिसे सी को क्लास कोड के साथ साधारण सी में अनुवाद करने के लिए डिज़ाइन किया गया था।
1983 में, भाषा का नाम C से क्लास के साथ C++ में बदल दिया गया था। सी भाषा में ++ ऑपरेटर एक चर को बढ़ाने के लिए एक ऑपरेटर है, जो कुछ अंतर्दृष्टि देता है कि स्ट्रॉस्ट्रप ने भाषा को कैसे माना। इस समय के आसपास कई नई सुविधाएँ जोड़ी गईं, जिनमें से सबसे उल्लेखनीय हैं वर्चुअल फ़ंक्शंस, फ़ंक्शन ओवरलोडिंग, &सिंबल के साथ संदर्भ, कॉन्स्ट कीवर्ड, और दो फ़ॉरवर्ड स्लैश का उपयोग करके सिंगल-लाइन टिप्पणियाँ।
1985 में, C++ को एक वाणिज्यिक उत्पाद के रूप में लागू किया गया था। भाषा को अभी तक आधिकारिक तौर पर मानकीकृत नहीं किया गया था। 1989 में संरक्षित और स्थिर सदस्यों के साथ-साथ कई वर्गों से विरासत को शामिल करने के लिए भाषा को फिर से अपडेट किया गया था।
1990 में, Turbo C++ को एक व्यावसायिक उत्पाद के रूप में जारी किया गया था। Turbo C++ ने कई अतिरिक्त पुस्तकालय जोड़े हैं जिनका C++ के विकास पर काफी प्रभाव पड़ा है।
1998 में, C++ मानक समिति ने C++ ISO/IEC 14882:1998 के लिए पहला अंतर्राष्ट्रीय मानक प्रकाशित किया, जिसे अनौपचारिक रूप से C++98 के रूप में जाना जाता है। स्टैण्डर्ड टेम्प्लेट लाइब्रेरी, जिसने 1979 में अपना वैचारिक विकास शुरू किया था, को भी शामिल किया गया था। 2003 में, समिति ने कई समस्याओं का जवाब दिया जो उनके 1998 के मानक के साथ रिपोर्ट की गई थीं और तदनुसार इसे संशोधित किया गया था। परिवर्तित भाषा का नाम C++03 रखा गया।
2011 के मध्य में, नया C++ मानक (C++11) समाप्त हो गया था। नई सुविधाओं में रेगेक्स सपोर्ट, एक रैंडमाइजेशन लाइब्रेरी, एक नया सी ++ टाइम लाइब्रेरी, एटॉमिक्स सपोर्ट, एक स्टैंडर्ड थ्रेडिंग लाइब्रेरी, कुछ अन्य भाषाओं में प्रत्येक लूप के लिए समान कार्यक्षमता प्रदान करने वाला लूप सिंटैक्स के लिए एक नया, ऑटो कीवर्ड, नए कंटेनर क्लासेस शामिल हैं। यूनियनों और सरणी-आरंभीकरण सूचियों और विविध टेम्पलेट्स के लिए बेहतर समर्थन।