İçindekiler:
- C ++ goto komutu
- enum Renkler {BLACK, BLUE, GREEN, SARI, RED}; Renkler myColor = SİYAH;
- Ad alanı sınıf adının üstünde ve altında. Civil Engineering alanındaki BullDozer sınıfının grade () üye işlevi genişletilmiş CivilEngineering:: BullDozer:: grade () adını taşır.
- saf sanal üye fonksiyonu
- dize bir sınıf bile değil. Bu bir şablon sınıfının bir örneğidir. Hata mesajları nefes kesici olabilir.
- Aslında, C ++ 'ın çoklu kalıtım destekleyen tek C benzeri dil olması birçok sorunun ortaya çıkmasına neden olur. Java ve C #, her iki dil de C ++ 'dan türetilmiş, çok kalıtım desteğini bırakmaya karar verdiler.
- int max (int n1, int n2) {if (n1> n2) {return n1;} dönüş n2;} char max (char n1, char n2) {if (n1> n2) {döndür n1;} döndür n2;} çift maks (çift n1, çift n2) {if (n1> n2) Biri başkasına, "derleme zamanında tanımlayabildiğiniz sahte türde bir T ile türünü değiştirebilirseniz, serin olmaz mıydı" yazıyor: "n2; return n2;}
Video: Üniversite Okumadan Sizi Zengin Yapacak 5 Programlama (Yazılım) Dili 2024
C ++ dili, programcıların her birinin başında anlaşılamayacak kadar çok özellik içeriyor: Başkalarının gözünde onlara bakmak için ileride bakmak isteyebileceğiniz on özellik aşağıda belirtilmiştir. Neyse ki, büyük, gerçek dünya programları yazmak için dilin tüm özelliklerine hakim olmanız gerekmez. Aşağıda, başkalarının programlarında görmeniz ihtimaline karşı, öne bakmak isteyebileceğiniz on özellik bulunmaktadır.
C ++ goto komutu
Bu komut, C ++'nın öncüsü olan C'ye geri gider. İlke olarak, bu komutu kullanmak kolaydır. Goto etiketi yerleştirebilirsiniz; istediğin herhangi bir yer. C ++ bu komutla karşılaştığında, denetim şu kod parçasında gösterildiği gibi etikete geçer:
Bununla birlikte, goto, berelenmenin birçok yolunu sunuyor. Her durumda, programcıların goto'nun en yaygın iki kullanımının döngülerden çıkıp bir döngü içindeki bir sonraki döneme gitmek olduğunu fark etmeleri çok uzun sürmedi. C Standards Committee, mola verdi ve devam etti ve goto komutunun neredeyse tamamen kaldırıldı.
üçlü operatör , C ve C ++ 'ye özgü bir operatöre aittir. Şöyle çalışır: int n = (koşullu)? expression1: ifade2;
? operatör ilk koşullu değerlendirir. Koşul doğruysa, ifadenin değeri ifade1'in değerine eşittir; Aksi takdirde, expression2 değerine eşittir.
Örneğin, maximum () işlevini aşağıdaki gibi uygulayabilirsiniz:
Üçlü operatör, herhangi bir sayı türüne uygulanabilir, ancak aşırı yüklenemez. Üçlü operatör gerçekten bir ifade - bir if gibi bir kontrol ifadesi değil.
C ++ 'da numaralandırılmış türler Basit fikir, burada gösterildiği gibi sabitleri tanımlayabilir ve C ++ tarafından değer atamanıza izin verirsiniz:
enum Renkler {BLACK, BLUE, GREEN, SARI, RED}; Renkler myColor = SİYAH;
Numaralandırılmış türlerle ilgili sorun uygulanmasında yatar: Doğru bir tür oluşturmak yerine, C ++ tam sayıları kullanır. Bu durumda, SİYAH'a 0 değeri, BLUE'ya 1, YEŞİL2 ve benzeri atanır.
C ++ için 2011 Standart Kitaplığı, aşağıdaki pasajda gösterildiği gibi numaralandırılmış bir sınıf türü oluşturarak bu sorunu "sabitledi":
enum sınıfı Renkler {BLACK, BLUE, GREEN, SARI, RED}; Renkler myColor = Renkler:: BLACK;Bu sürümde, Renkler yeni bir türe ait.KARIŞIMLARIN SİYAH, MAVİ ve benzeri sabitlerin her biri Renkli üyelerdir. Sınıf renklerinin bir nesnesini bir int içine atabilirsiniz, ancak örtülü bir yayın yapılamaz.
C ++ namespaces
Aynı adlı iki farklı kütüphanede farklı nesneler vermek mümkündür. Örneğin, Öğrenci kütüphanesi içerisindeki grade () işlevi büyük olasılıkla bir not atar; buna karşılık Civil Engineering üniversitelerindeki grade () işlevi, eğimi bir tepenin kenarında ayarlayabilir. Bu sorundan kaçınmak için C ++, programcının kodunu ayrı bir ad alanına yerleştirmesine izin verir. Dolayısıyla Öğrenci ad alanındaki not Civil Mühendisliğindeki nottan farklıdır.
Ad alanı sınıf adının üstünde ve altında. Civil Engineering alanındaki BullDozer sınıfının grade () üye işlevi genişletilmiş CivilEngineering:: BullDozer:: grade () adını taşır.
Tüm kitaplık nesneleri ve işlevleri std ad alanındadır. Program adının başındaki ifadede şablon ad alanı std; varsayılan ad alanında belirtilen nesneyi görmezseniz, o zaman std'ye bakmanız gerektiğini söylüyor.
C ++'da saf sanal işlevler
Sanal olarak bildirilen bir işlev tanımlamak zorunda değilsiniz. Böyle bir tanımlanmamış fonksiyon,
saf sanal üye fonksiyonu
olarak bilinir. Ancak bu noktada işler karmaşıklaşıyor. Örneğin, bir veya daha fazla saf sanal işlevleri olan bir sınıfın soyut olduğu söylenir ve bir nesne oluşturmak için kullanılamaz. Sanal işlevlerle ve geç bağlama konusunda rahat hissettikten sonra bu konuyla başa çıkın. C ++ dize sınıfı Çoğu dilde, karakter dizelerini kolayca işlemek için intrinsik bir tür olarak bir dize sınıfı bulunur. Teorik olarak, dize sınıfı C ++ için aynı şeyi yapmalıdır. Ancak uygulamada bu kadar basit değil. Dize intrinsik bir tür olmadığından, bir şey ters gittiğinde derleyicinin oluşturduğu hata iletileri, kullanıcı tanımlı sınıflarla ilişkili olanlara benzer. Yeni başlayanlar için bu mesajların yorumlanması çok zor olabilir.
dize bir sınıf bile değil. Bu bir şablon sınıfının bir örneğidir. Hata mesajları nefes kesici olabilir.
C ++'da birden çok devralma
Bir sınıf aslında birden fazla taban sınıfını genişletebilir. Bu basit gelebilir ancak iki taban sınıfı aynı ada sahip üyelik işlevleri içerdiğinde oldukça karmaşık hale gelebilir. Daha da kötüsü, her iki taban sınıfı da kendilerinin ortak sınıfın alt sınıfları olduğunda.
Aslında, C ++ 'ın çoklu kalıtım destekleyen tek C benzeri dil olması birçok sorunun ortaya çıkmasına neden olur. Java ve C #, her iki dil de C ++ 'dan türetilmiş, çok kalıtım desteğini bırakmaya karar verdiler.
C ++ şablonları ve Standart Şablon Kütüphanesi
C ++ üreticileri, aşağıdakine benzer benzer işlevlerin farkına vardı:
int max (int n1, int n2) {if (n1> n2) {return n1;} dönüş n2;} char max (char n1, char n2) {if (n1> n2) {döndür n1;} döndür n2;} çift maks (çift n1, çift n2) {if (n1> n2) Biri başkasına, "derleme zamanında tanımlayabildiğiniz sahte türde bir T ile türünü değiştirebilirseniz, serin olmaz mıydı" yazıyor: "n2; return n2;}
"Bunu bilmeden önce presto - şablonlar C ++ 'un bir parçası olur:
şablon T max (T 1> t 2) {if t1> t2;}
Şimdi programcı T'yi int ile değiştirip sonucu derleyerek bir max (int, int) oluşturun, T'yi double ile değiştirerek bir max (double, double) oluşturun vb. Standartlar Komitesi bile şablon sınıflarına dayanan Standart Şablon Kütüphanesi (kısaca STL) olarak bilinen bütün bir sınıf kütüphanesini yayımladı.
Bununla birlikte, yeni başlayanlar için, şablon sınıflarının konusu sözdizimsel olarak çok karmaşıklaşmaya başlar. Buna ek olarak, yanlış bir şablon örneği aldığınızda derleyicinin ürettiği hatalar, yeni başlayanlara aldırmayın, bir uzmana şaşırtıcı gelir. Bu kesinlikle, temel dilde rahat hissetene kadar beklemesi gereken bir konudur.