Berbagi teknologi

C Dasar-dasar untuk Memulai (1)

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

Selamat datang semuanya di blog Pirate Cat Ou——

Setelah istirahat panjang, mari kita terus belajar dengan giat!

Daftar isi

1.ruang nama ruang nama

Nilai keberadaan namespace:

Definisi ruang nama:

Penggunaan ruang nama:

2.Fungsi masukan dan keluaran C++

menggunakan:

3. Parameter bawaan

4. Fungsi kelebihan beban

Kesimpulan:


1.ruang nama ruang nama

Nilai keberadaan namespace:

Di C/C++, ada banyak sekali variabel, fungsi, dan kelas yang harus dipelajari nanti. Nama-nama variabel, fungsi, dan kelas ini semuanya akan ada dalam lingkup global, yang mungkin menimbulkan banyak konflik.Tujuan penggunaan namespace adalah untuk melokalisasi nama pengenal untuk menghindari konflik penamaan atau polusi nama. Kata kunci namespace muncul untuk mengatasi masalah ini.

Singkatnya, ketika ada beberapa variabel dengan nama yang sama dalam proyek yang sama, hal ini dapat mencegah konflik penamaan atau pencemaran nama, dan juga memfasilitasi pembedaan. Dapat dikatakan sangat diperlukan dalam pengembangan proyek skala besar.

Definisi ruang nama:

Namespace adalah kata kunci dari namespace. Tambahkan nama namespace setelah kata kunci, dan tambahkan {} untuk membatasi cakupannya.

  1. namespace hdmo
  2. {
  3. int a = 1;
  4. }

Melihat: Tidak perlu menambahkan ' ; ' setelah ' } ' terakhir dari namespace, yang berbeda dari struktur dan mirip dengan fungsi.

Inti dari namespace adalah kita membuat domain yang independen dari cakupan global. Sama seperti setiap fungsi yang memiliki cakupan, cakupan parameter di setiap fungsi berada dalam cakupan fungsi tersebut.Hal yang sama berlaku untuk namespaceRuang lingkup fungsi, variabel, dll. dalam namespace berada dalam cakupan terbatas dari namespace dan perlu digunakan dengan memanggil namespace., tetapi perlu diperhatikan bahwaVariabel fungsi di namespace, dll., memiliki siklus hidup global

Namespace hanya dapat didefinisikan dalam lingkup global, dan juga dapat disarangkan.

Dalam proyek yang sama, namespace dengan nama yang sama akan dianggap sebagai namespace yang sama.

  1. namespace hdmo
  2. {
  3. int a = 1;
  4. }
  5. namespace hdmo
  6. {
  7. int b = 1;
  8. }

Saat ini, kedua hdmo mewakili namespace yang sama.

Pustaka standar C++ disimpan dalam namespace yang disebut std (standar) untuk mencegah konflik dengan fungsi dalam bahasa lain. Inilah sebabnya mengapa program C++ pada dasarnya berisi a

using namespace std;

Hanya untuk menyertakan perpustakaan standar C++.

Penggunaan ruang nama:

Karena namespace adalah domain, jika Anda ingin menggunakan variabel fungsi dan konten lainnya secara eksternal, Anda perlu menggunakan operator seperti struktur untuk mencapai operasi ini.

Operator panggilan namespace adalah dua titik dua ::

  1. #include <stdio.h>
  2. namespace hdmo
  3. {
  4. int a = 1;
  5. }
  6. int a = 2;
  7. int main()
  8. {
  9. printf("%dn", a);
  10. printf("%dn", ::a);
  11. printf("%dn", hdmo::a);
  12. return 0;
  13. }

Dari hasil keluarannya kita dapat mengetahui bahwa: ketika bagian depan :: kosong, variabel lingkup global dipanggil secara default.

Ada tiga cara untuk menggunakan variabel, fungsi, dll. di namespace:

1.kunjungan tunggal: Gunakan :: untuk mengakses variabel atau fungsi satu per satu dalam namespace, yang merupakan cara paling aman untuk menggunakannya;

2.Ekspansi tunggal : Gunakan menggunakan untuk memperluas variabel atau fungsi saja. Setelah perluasan, cakupannya menjadi cakupan global dan tidak lagi dibatasi oleh namespace. Disarankan untuk menggunakan metode ini dalam kondisi umum tanpa konflik.

3.Diperluas sepenuhnya: Secara langsung memperluas semua namespace yang ditentukan. Tidak disarankan untuk digunakan dalam proyek. Risiko konflik tinggi. Ini dapat digunakan dalam program kecil (perpustakaan standar dari perpustakaan standar C++ diperluas sepenuhnya, jadi ketika kita menggunakan cin dan cout, Tidak perlu awalan std ::)

2.Fungsi masukan dan keluaran C++

Dalam bahasa C, pernyataan input dan output kami masing-masing adalah scanf dan printf. C++ juga kompatibel dengan pernyataan input dan output bahasa C, tetapi juga memiliki fungsi input dan outputnya sendiri, yaitu cin dan cout.

Untuk menggunakan fungsi cin dan cout, Anda harus menyertakan<iostream>Pustaka aliran masukan dan keluaran standar, dan harus menyertakan pustaka fungsi standar C++

  1. #include <iostream>
  2. using namespace std;

menggunakan:

Saat menggunakan cin, gunakan '&gt;&gt;' untuk masuk;

Saat menggunakan cout, gunakan '&lt;&lt;' untuk menampilkan.

&lt;&lt; adalah operator penyisipan aliran, &gt;&gt; adalah operator ekstraksi aliran (&lt;&lt; dan &gt;&gt; juga mewakili operator shift kiri dan shift kanan dalam bahasa C)

  1. #include <iostream>
  2. using namespace std;
  3. int main()
  4. {
  5. int a = 0;
  6. cin >> a;
  7. cout << a << endl;
  8. printf("%dn", a);
  9. return 0;
  10. }

Pertama-tama kita dapat memahami endl sebagai line break 'n', bagian dasarnya tidak akan dijelaskan terlalu banyak, dan akan ditambahkan pada penelitian selanjutnya.

Kita dapat melihat dari kode di atas bahwa cin dan cout tidak menggunakan %d, %c, dll. seperti scanf dan printf untuk mengontrol format input dan output variabelcin dan cout secara otomatis dapat mengidentifikasi jenis variabel dan data, yang merupakan tempat yang relatif nyaman.

Di lingkungan VS2022, kode di atas tidak mengandung<stdio.h> , Anda juga dapat menggunakan fungsi scanf dan prinf, karena di VS<iostream>termasuk secara tidak langsung<stdio.h>, sehingga dapat digunakan secara langsung, namun mungkin perlu disertakan dalam lingkungan kompilasi lainnya.<stdio.h> .

Jika Anda ingin mencapai operasi seperti akurasi kontrol, disarankan untuk langsung menggunakan metode input dan output bahasa C. Akan lebih merepotkan jika mengimplementasikan operasi ini di C++.

Perlu dicatat bahwa scanf dan printf lebih cepat daripada cin dan cout. Dalam kompetisi, scanf dan printf dapat digunakan secara langsung dalam pertanyaan tentang waktu berjalan yang macet. Kode berikut dapat meningkatkan efisiensi cin dan cout, tetapi artikel ini No penjelasannya belum.

  1. #include <iostream>
  2. using namespace std;
  3. int main()
  4. {
  5. // 在io需求⽐较⾼的地⽅,如部分⼤量输⼊的竞赛题中,加上以下3⾏代码
  6. // 可以提⾼C++IO效率
  7. ios_base::sync_with_stdio(false);
  8. cin.tie(nullptr);
  9. cout.tie(nullptr);
  10. return 0;
  11. }

3. Parameter bawaan

Parameter default adalah memberikan parameter fungsi nilai default saat mendeklarasikan atau mendefinisikan suatu fungsi. Saat kita memanggil fungsi, jika parameter default tidak memberikan nilai, nilai default yang ditentukan akan digunakan akan digunakan.

Parameter default dibagi menjadi default penuh dan semi-default penuh default berarti semua parameter formal diberi nilai default, dan semi-default berarti beberapa parameter formal diberi nilai default. Dan C++ menetapkan bahwa parameter semi-default harus di-default secara berurutan dari kanan ke kiri, dan tidak dapat melompat ke nilai default secara berkala.

  1. #include <iostream>
  2. using namespace std;
  3. namespace hdmo
  4. {
  5. //全缺省
  6. int Fun1(int x = 0, int y = 0)
  7. {
  8. return x + y;
  9. }
  10. //半缺省
  11. int Fun2(int x, int y = 0)
  12. {
  13. return x + y;
  14. }
  15. }
  16. int main()
  17. {
  18. cout << hdmo::Fun1() << endl;//全缺省可以不传参
  19. cout << hdmo::Fun1(1) << endl;
  20. cout << hdmo::Fun1(1,1) << endl;
  21. /*
  22. cout << hdmo::Fun2() << endl;//半缺省不能不传参
  23. */
  24. cout << hdmo::Fun2(2) << endl;
  25. cout << hdmo::Fun2(2,2) << endl;
  26. return 0;
  27. }

Hasil dari kode di atas adalah:

Semi-default harus memastikan definisi dan kontinuitas parameter default dari kanan ke kiri, dengan parameter normal di kiri dan parameter default di kanan.

4. Fungsi kelebihan beban

Kelebihan fungsi berarti ada beberapa fungsi dengan nama fungsi yang sama secara bersamaan. Nama fungsi yang sama mewakili beberapa fungsi sekaligus, yang merupakan kelebihan beban.

Perbedaan di antara keduanya ditentukan oleh tipe dan nomor parameter, dan tidak ada hubungannya dengan tipe nilai kembalian.Dua fungsi dengan nama yang sama yang hanya memiliki tipe nilai kembalian berbeda tidak dapat dibebani secara berlebihan

  1. #include <iostream>
  2. using namespace std;
  3. namespace hdmo
  4. {
  5. int Add(int x, int y)
  6. {
  7. return x + y;
  8. }
  9. double Add(double x, int y)
  10. {
  11. return x + y;
  12. }
  13. double Add(int x, double y)
  14. {
  15. return x + y;
  16. }
  17. double Add(double x, double y)
  18. {
  19. return x + y;
  20. }
  21. }
  22. int main()
  23. {
  24. using hdmo::Add;
  25. cout << Add(1, 1) << endl;
  26. cout << Add(1.1, 1) << endl;
  27. cout << Add(1, 1.1) << endl;
  28. cout << Add(1.1, 1.1) << endl;
  29. return 0;
  30. }

Hasilnya adalah:

Dari kode di atas kita dapat melihat bahwa penggunaan kelebihan beban dapat membuat kita menggunakan fungsi dengan lebih nyaman. Dalam bahasa C, untuk mencapai efek di atas, kita perlu menggunakan empat nama fungsi yang berbeda untuk mendefinisikan empat fungsi, dan menggunakannya secara berbeda saat digunakan. Dengan kelebihan beban di C++, kita dapat menyatukan semua fungsi tambahan karena Tidak perlu membedakan satu nama saat menggunakannya, cukup gunakan secara langsung, yang sangat nyaman.

Kesimpulan:

Artikel tentang dasar-dasar memulai C++ ini akan berakhir di sini. Nanti kami akan terus menjelaskan pengetahuan dasar dasar lainnya. Selamat datang semuanya untuk terus datang dan memberi kami saran.

Jika Anda memiliki kekurangan, Anda dapat menunjukkannya melalui pesan pribadi atau di kolom komentar!

Beranda:Blog Bajak Laut Cat Ou-CSDN

Ini camar kecilnya! Sampai jumpa lagi~(*¯︶¯*)~