Bagikan melalui


Konvensi Pustaka C++

Pustaka C++ mematuhi banyak konvensi yang sama dengan Pustaka C Standar, ditambah beberapa lagi yang diuraikan di sini.

Implementasi memiliki garis lintang tertentu dalam cara mendeklarasikan jenis dan fungsi di pustaka C++:

  • Nama fungsi di pustaka Standard C mungkin memiliki tautan "C++" atau ekstern "C". Sertakan header C Standar yang sesuai daripada mendeklarasikan entitas pustaka sebaris.

  • Nama fungsi anggota di kelas pustaka mungkin memiliki tanda tangan fungsi tambahan atas yang tercantum dalam dokumen ini. Anda dapat yakin bahwa panggilan fungsi yang dijelaskan di sini berpura-pura seperti yang diharapkan, tetapi Anda tidak dapat dengan andal mengambil alamat fungsi anggota pustaka. (Jenisnya mungkin tidak seperti yang Anda harapkan.)

  • Kelas pustaka mungkin memiliki kelas dasar yang tidak terdokumentasi (nonvirtual). Kelas yang didokumentasikan sebagai berasal dari kelas lain mungkin, pada kenyataannya, berasal dari kelas tersebut melalui kelas lain yang tidak terdokumentasi.

  • Jenis yang didefinisikan sebagai sinonim untuk beberapa jenis bilangan bulat mungkin sama dengan salah satu dari beberapa jenis bilangan bulat yang berbeda.

  • Jenis bitmask dapat diimplementasikan sebagai jenis bilangan bulat atau enumerasi. Dalam kedua kasus, Anda dapat melakukan operasi bitwise (seperti AND dan OR) pada nilai jenis bitmask yang sama. Elemen A dan B jenis bitmask adalah nilai bukan nol sehingga A & B adalah nol.

  • Fungsi pustaka yang tidak memiliki spesifikasi pengecualian dapat melemparkan pengecualian arbitrer, kecuali definisinya dengan jelas membatasi kemungkinan tersebut.

Di sisi lain, ada beberapa batasan:

  • Pustaka C Standar tidak menggunakan makro masking. Hanya tanda tangan fungsi tertentu yang dicadangkan, bukan nama fungsi itu sendiri.

  • Nama fungsi pustaka di luar kelas tidak akan memiliki tanda tangan fungsi tambahan, tidak terdokumentasi. Anda dapat dengan andal mengambil alamatnya.

  • Kelas dasar dan fungsi anggota yang dijelaskan sebagai virtual dipastikan virtual, sementara yang digambarkan sebagai nonvirtual dipastikan nonvirtual.

  • Dua jenis yang ditentukan oleh pustaka C++ selalu berbeda kecuali dokumen ini secara eksplisit menyarankan sebaliknya.

  • Fungsi yang disediakan oleh pustaka, termasuk versi default fungsi yang dapat diganti, dapat melemparkan sebagian besar pengecualian yang tercantum dalam spesifikasi pengecualian apa pun. Tidak ada destruktor yang disediakan oleh pustaka yang melempar pengecualian. Fungsi dalam Pustaka C Standar dapat menyebarluaskan pengecualian, seperti ketika qsort memanggil fungsi perbandingan yang melemparkan pengecualian, tetapi tidak melemparkan pengecualian.

Lihat juga

Gambaran Umum Pustaka Standar C++
Keamanan utas di Pustaka Standar C++