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. |