Michael Aaron Safyan はすでに非常に良い答えを出しています。オブジェクト指向言語が遅いコードに関連付けられることがある理由について、少しだけ貢献したいと思います。
私たちプログラマーに対する現実世界の要求は、より短い時間でより多くのコードを書くことを私たちに強い続けています。非常に熟練したプログラマーがいるとすれば、プログラマーはマシンが実行する必要のある操作を正確にコーディングし、それ以外はほとんどないため、アセンブリ言語はすべての速度記録を獲得します。実際には、面倒でエラーが発生しやすいため、ほとんどのプログラミングはアセンブラーで行われません。コンパイルされた言語を使用すると、コンパイラーが詳細な作業の多くを処理できるため、プログラマーの生産性が大幅に向上します。
さらに同じ方向に進むと、Delphi は自動文字列で動作します。これらは、使用されるたびに「適切な」長さになります。2 つの文字列を連結すると、前の文字列の組み合わせに適した長さの新しい文字列が生成されます。その文字列を変更して長くすると、新しい文字列が作成され、以前の文字列は自動的に破棄されます。C プログラマーとして、プログラムが何をするかを予測し、より大きな文字列に十分なスペースを割り当てることができたので、新しい文字列を作成して古い文字列を破棄する必要はありませんでした。したがって、文字列のメモリ管理は、CPU 時間をいくらか犠牲にして購入したプログラマーにとって便利です。
同様に、オブジェクト指向では、関連するデータのグループを、文字列や数値ではなく同種のチャンクとして扱うことができます。場合によっては、この情報のすべてが必要なわけではなく、低レベルの C プログラムでは、オブジェクトが発生する操作やメモリ使用の一部を省略できる場合があります。これもまた、CPU 速度よりもプログラマーの利便性の問題です。
最後に、一部のインターフェースは非常に複雑であると考えられており、ソフトウェア会社は、概念的により単純な処理を備えたオブジェクト指向フレームワークを作成することによって、それらを親しみやすいものにしようとしています。ウィンドウを開く呼び出しを行うのではなく、ウィンドウ オブジェクトを作成することができますが、通常は少しオーバーヘッドがかかります。奇妙な開発では、ソフトウェア会社や個々の開発者が、他のフレームワークの複雑さを隠したり処理したりするために、さらにオブジェクト指向のフレームワークを構築することがよくあります。一部の古いプロジェクトでは、元の機能の上にオブジェクト指向フレームワークの複数のレイヤーが追加されてしまいます。当然のことながら、プロジェクト自体の管理に多くの時間を費やしているため、多くのメモリを消費しながら、パフォーマンスが低下していることを顧客に示しています。
要約すると、オブジェクト指向コードは、その使用方法によってパフォーマンスが低下することがあります。しかし、特に C++ の場合、言語自体が「遅い」ということはありません。