C ++ diciptakan untuk mengelola kompleksitas yang tidak bisa ditangani oleh C. Sebagai contoh, masalah umum dengan C adalah bahwa Anda dapat "kehabisan nama untuk variabel" (tidak harus diambil secara harfiah tentu saja) karena tidak ada enkapsulasi, ruang nama dll.
Juga, C tidak memiliki pengecualian, oleh karena itu penanganan kesalahan sangat rawan kesalahan, karena tergantung pada pengguna perpustakaan untuk selalu memeriksa nilai kembali dari funcs, sedangkan dengan pengecualian, pengembang perpustakaan hanya melempar pengecualian yang menjamin aliran program akan dihentikan.
C ++ membantu dengan memiliki objek init konstruktor yang secara otomatis dipanggil oleh kompiler. Tidak seperti C struct yang perlu diinisialisasi oleh programmer (maka daerah rawan kesalahan lain).
Terakhir, ada banyak keuntungan lain yang dipuji oleh OOP, seperti penggunaan kembali objek serta konsep berbasis pemrograman generik, seperti template dan generik yang memungkinkan Anda untuk menggunakan kembali kode sumber, dll.
Dan banyak hal lain yang akan mengambil terlalu banyak waktu saya untuk dicantumkan di sini.