Daftar Isi:
- Perintah C ++ goto
- Operator terner
- Gagasan sederhananya adalah Anda dapat mendefinisikan konstanta dan membiarkan C ++ menugaskan nilai mereka, seperti yang ditunjukkan di sini:
- Mungkin untuk memberikan entitas yang berbeda dalam dua pustaka yang berbeda dengan nama yang sama. Misalnya, fungsi kelas () di perpustakaan Pelajar mungkin memberi nilai, sedangkan fungsi kelas () di perpustakaan CivilEngineering dapat mengatur kemiringan di sisi bukit. Untuk menghindari masalah ini, C ++ memungkinkan programmer untuk menempatkan kodenya di ruang nama yang terpisah. Dengan demikian kelas dalam ruang nama Siswa berbeda dari kelas dalam CivilEngineering.
- Anda tidak perlu mendefinisikan fungsi yang dideklarasikan secara virtual. Fungsi undefined seperti itu dikenal sebagai fungsi anggota virtual murni
- Kebanyakan bahasa menyertakan kelas string sebagai tipe intrinsik untuk menangani string karakter dengan mudah. Secara teori, kelas string harus melakukan hal yang sama untuk C ++. Namun, dalam praktiknya, itu tidak sesederhana itu. Karena string bukanlah tipe intrinsik, pesan kesalahan yang dihasilkan oleh compiler saat terjadi kesalahan lebih mirip dengan yang terkait dengan kelas yang ditentukan pengguna. Bagi pemula, pesan ini bisa sangat sulit untuk ditafsirkan. String
- Satu kelas benar-benar dapat memperpanjang lebih dari satu kelas dasar. Ini terdengar sederhana namun bisa menjadi sangat rumit ketika kedua kelas dasar tersebut berisi fungsi anggota dengan nama yang sama. Yang lebih buruk lagi adalah ketika kedua kelas dasar itu sendiri merupakan subkelas dari beberapa kelas umum.
- Pembuat C ++ melihat bagaimana fungsi serupa seperti berikut ini:
Video: Introduction to programming || C Programming Tutorial Beginner to Advanced 2024
Bahasa C ++ berisi begitu banyak fitur yang mungkin tidak dapat dimengerti oleh pemrogram awal. Untungnya, Anda tidak perlu menguasai semua fitur bahasa untuk menulis program dunia nyata yang hebat. Berikut adalah sepuluh fitur yang mungkin ingin Anda lihat, kalau-kalau Anda melihatnya di program orang lain.
Perintah C ++ goto
Perintah ini berjalan sampai kembali ke C, nenek moyang dari C ++. Pada prinsipnya, menggunakan perintah ini mudah dilakukan. Anda bisa menempatkan label goto; dimanapun kamu mau. Saat C ++ menemukan perintah ini, kontrol langsung lolos ke label, seperti yang ditunjukkan pada cuplikan kode ini:
untuk (;;) {if (ekspresi kondisional) {goto outahere;} // … apapun yang anda mau …} outahere: // … program berlanjut disini …
Dalam praktiknya, goto mengenalkan banyak cara untuk mengacaukan. Bagaimanapun, tidak butuh waktu lama sebelum programmer memperhatikan bahwa dua penggunaan goto yang paling umum adalah untuk keluar dari loop dan menuju ke kasus berikutnya dalam satu lingkaran. Komite Standar C memperkenalkan break dan continue dan hampir sepenuhnya menghilangkan kebutuhan akan perintah goto.
Operator terner
adalah operator yang unik untuk C dan C ++. Ia bekerja sebagai berikut: int n = (bersyarat)? expression1: expression2;
itu? operator pertama mengevaluasi kondisional. Jika kondisinya benar, maka nilai ungkapannya sama dengan nilai ekspresi1; Jika tidak, itu sama dengan nilai ekspresi2.
Misalnya, Anda bisa menerapkan fungsi maksimum () sebagai berikut:
Operator terner dapat diaplikasikan pada jenis numerik namun tidak dapat kelebihan beban. Operator terner benar-benar sebuah ungkapan - bukan pernyataan kontrol seperti if.
Jenis yang dicacah di C + +
Gagasan sederhananya adalah Anda dapat mendefinisikan konstanta dan membiarkan C ++ menugaskan nilai mereka, seperti yang ditunjukkan di sini:
enum Colour {BLACK, BLUE, GREEN, YELLOW, RED}; Warna myColor = BLACK;
Masalah dengan jenis yang disebutkan di sini terletak pada penerapannya: Daripada membuat jenis yang benar, C ++ menggunakan bilangan bulat. Dalam kasus ini, BLACK diberi nilai 0, BLUE diberi 1, GREEN2, dan seterusnya.
kelas enum Warna {BLACK, BLUE, GREEN, YELLOW, RED}; Warna myColor = Warna:: BLACK;
Pada versi ini, Warna adalah tipe baru.Masing-masing konstanta, BLACK, BLUE, dan sebagainya, adalah anggota tipe Colors. Anda masih bisa melemparkan objek Warna kelas ke int, tapi pemeran implisit tidak diijinkan.
C + + namespaces
Mungkin untuk memberikan entitas yang berbeda dalam dua pustaka yang berbeda dengan nama yang sama. Misalnya, fungsi kelas () di perpustakaan Pelajar mungkin memberi nilai, sedangkan fungsi kelas () di perpustakaan CivilEngineering dapat mengatur kemiringan di sisi bukit. Untuk menghindari masalah ini, C ++ memungkinkan programmer untuk menempatkan kodenya di ruang nama yang terpisah. Dengan demikian kelas dalam ruang nama Siswa berbeda dari kelas dalam CivilEngineering.
Ruang nama di atas dan di luar nama kelas. Fungsi kelas () anggota kelas BullDozer di namespace CivilEngineering memiliki nama extended CivilEngineering:: BullDozer:: grade ().
Semua objek dan fungsi perpustakaan ada di ruang nama std. Pernyataan di awal template program menggunakan namespace std; mengatakan bahwa jika Anda tidak melihat objek yang ditentukan dalam namespace default, maka lihatlah di std.
Fungsi virtual murni di C ++
Anda tidak perlu mendefinisikan fungsi yang dideklarasikan secara virtual. Fungsi undefined seperti itu dikenal sebagai fungsi anggota virtual murni
. Pada saat itu, bagaimanapun, hal menjadi rumit. Misalnya, kelas dengan satu atau lebih fungsi virtual murni dikatakan abstrak dan tidak bisa digunakan untuk membuat objek. Tangani masalah ini setelah Anda merasa nyaman dengan fungsi virtual dan terlambat mengikat. Kelas string C ++
Kebanyakan bahasa menyertakan kelas string sebagai tipe intrinsik untuk menangani string karakter dengan mudah. Secara teori, kelas string harus melakukan hal yang sama untuk C ++. Namun, dalam praktiknya, itu tidak sesederhana itu. Karena string bukanlah tipe intrinsik, pesan kesalahan yang dihasilkan oleh compiler saat terjadi kesalahan lebih mirip dengan yang terkait dengan kelas yang ditentukan pengguna. Bagi pemula, pesan ini bisa sangat sulit untuk ditafsirkan. String
bahkan bukan kelas. Ini adalah contoh kelas template. Pesan error bisa jadi menakjubkan.
Beberapa pewarisan di C ++
Satu kelas benar-benar dapat memperpanjang lebih dari satu kelas dasar. Ini terdengar sederhana namun bisa menjadi sangat rumit ketika kedua kelas dasar tersebut berisi fungsi anggota dengan nama yang sama. Yang lebih buruk lagi adalah ketika kedua kelas dasar itu sendiri merupakan subkelas dari beberapa kelas umum.
Sebenarnya, begitu banyak masalah muncul bahwa C ++ adalah satu bahasa mirip C yang mendukung multiple inheritance. Java dan C #, kedua bahasa yang berasal dari C ++, memutuskan untuk menjatuhkan dukungan untuk multiple inheritance.
C ++ template dan Perpustakaan Template Standar
Pembuat C ++ melihat bagaimana fungsi serupa seperti berikut ini:
int max (int n1, int n2) {if (n1> n2) {return n1;} return n2;} double max (double n1, double n2) {if (n1> n2) {return n1;} return n2;} char max (char n1, char n2) {if (n1> n2) {return n1;} return n2;}
"Tidakkah itu keren," kata seseorang kepada yang lain, "jika Anda bisa mengganti tipe itu dengan tipe pseudo-tipe yang dapat Anda tentukan pada waktu kompilasi?"Sebelum Anda menyadarinya, template presto menjadi bagian dari template C ++:
T max (T t1, T t2) {if (t1> t2) {return t1;} return t2;}
Sekarang pemrogram dapat buat max (int, int) dengan mengganti T dengan int dan kompilasi hasilnya, buat max (double, double) dengan mengganti T dengan double, dan sebagainya. Komite Standar bahkan merilis keseluruhan perpustakaan kelas, yang dikenal sebagai Perpustakaan Template Standar (STL untuk jangka pendek), berdasarkan kelas template.
Bagi pemula, subjek kelas template mulai sintaksis sangat rumit. Selain itu, kesalahan yang dihasilkan oleh compiler saat Anda mendapatkan template Instansiasi yang salah membingungkan seorang ahli, apalagi pemula. Ini jelas topik yang perlu ditunggu sampai Anda merasa nyaman dengan bahasa dasarnya.