ストロヴストルップは
C with Classesの開発を
1979年に開始した。彼は大規模なソフトウェアの開発に有用な特徴を
Simulaが備えていることに気がついたが、Simulaは実行速度が遅く実用的でなかった。一方で
BCPLは実行速度こそ速かったものの、大規模なソフトウェア開発を念頭に置いた場合にあまりにも
低級であった。これらの事情を鑑みて、ストロヴストルップは当時既に汎用的な言語であったC言語にSimulaの特徴を取り入れることを試みた。この取り組みにあたっては
ALGOL68 や
Ada、
CLU、
ML等の言語の影響も受けている。最初はクラスと派生クラス、型検査機構の強化、
インライン関数、デフォルト引数の機能を、
Cfrontを介してC言語に追加した。
1985年10月に最初の商用リリースがなされた
。
1983年にはC with Classesから
C++に名称を変更した。この際に、
仮想関数と、関数と演算子の
多重定義、
参照型、
const型、ユーザー制御可能な自由領域メモリ制御、型検査機構の改良、新しいコメント形式(「
//」による行レベルのコメントアウト)などの機能が追加された。
1985年には『The C++ Programming Language』の初版が出版された(邦訳『プログラミング言語C++』(
1988年))。この時点では公式な標準が策定されていなかった為に、この本が事実上のリファレンスとなった。
1989年C++のヴァージョン2.0として、
多重継承と
抽象クラス、静的
メンバ関数、
constメンバ関数、
protectedメンバ等の機能が追加されたものがリリースされた。
1990年に『The Annotated C++ Reference Manual (ARM)』が出版され、将来の標準化の土台となるものを提供した。後に追加された機能には
テンプレートと
例外処理、
名前空間、新形式の
キャスト、
ブール型が含まれた。