C ve C++, ilk duyduğunuzda sanki iki aynı şeymiş gibi geliyor. Bu yazımızda sizlere, doğaları gereği birbirinden oldukça farklı olan bu programlama dilleri arasındaki farkları sizlere anlatmaya çalışacağım. Her ne kadar C ve C++'in güncelliklerini kaybettiği iddia edilse de C++ halen daha Nesne Tabanlı Programlama dili denince ilk akla gelen dil. C ise program ve yazılım geliştiricileri tarafından hala daha büyük oranda kullanılıyor.

Gelin beraber, bu farklılıkların bulunduğu bir liste yapalım ve iki dil arasındaki farklılıklara yakından göz atalım.

C++’ ın en başta gelen farklılığı ise Nesne Yönelimli olmasıdır. Buna karşın C fonksiyonel bir dildir. Peki tam olarak nedir Nesnel Yönelimli Programlama? Kısaca değinecek olursak; C dilinde (veya fonksiyonel herhangi bir dilde) program yazarken programımızı fonksiyonlara parçalar ve tasarlardık. Yani programımızın temel parçası fonskyionlar idi. C++ da ise programlarımızın temel birimi nesnelerdir.

C’de fonksiyonun parametresi yoksa, prototipin fonksiyon parametre listesinde void kelimesi bulunur. Örneğin C’de f1( ) adlı bir fonksiyonun parametresi yoksa(ve geriye bir char gönderiyorsa) bu fonksiyonun prototipi şu şekilde olur:
 

char f1(void);

Fakat C++’da void‘in yazılması isteğimize bağlıdır. Sonuç olarak C++’da f1( )‘in prototipi genelde şu şekildedir: char f1();

Fakat C++’da void‘in yazılması isteğimize bağlıdır. Sonuç olarak C++’da f1( )‘in prototipi genelde şu şekildedir: char f1();

C                                                                                        C++

C, 1969-1973 yılları arasında AT&T Bell Labs'de Dennis Ritchie tarafından geliştirilmiştir.

C ++, 1979'da Bjarne Stroustrup tarafından C ++ 'nın selefi "C with Classes" ile geliştirildi.

C, prosedürel (başka bir deyişle yapısal) bir programlama dilidir.

C++, prosedürel (yapısal) olmasının yanı sıra, aynı zamanda nesne tabanlı bir programlama dilidir.

C dilinde çözüm, bir dizi prosedür veya adımla gerçekleştirilir. Bu nedenle, C bir fonksiyon odaklı bir dildir.

C ++, tüm çözümü nesneler açısından modelleyebilir ve çözümü daha iyi organize eder. C ++, nesne tabanlı bir dildir.

C, orta seviyeli bir dildir.

C ++ yüksek seviyeli bir dildir.

C'de main () fonksiyonu diğer fonksiyonlardan çağrılabilir.

C ++'da main () fonksiyonu diğer fonksiyonlardan çağrılamaz. Programın yürütülmesi main() fonksiyonundan başlar.

C'de isim uzayı (namespace) desteği yoktur.

C++ isim uzaylarını destekler.

C'de kalıtım (inheritance) mümkün değildir.

C ++ nesneye yönelik bir dildir ve bu yüzden kalıtım mümkündür.

C'de, tüm değişkenlerin bir kapsamın (scope) başında bildirilmesi gerekir.

C ++, kapsamın herhangi bir yerindeki değişkenlerin bildirilmesine izin verir.

C'de fonksiyon yüklemesi (function overloading) mümkün değildir.

C ++'da fonksiyon yüklemesi (function overloading) mümkündür

C programları .c uzantılı dosyalara kaydedilir.

C++ programları .cpp uzantılı dosyalara kaydedilir.

C'de polimorfizm (polymorphism) desteklenmez.

C++'da polimorfizm desteklenir.