Mengeksekusi Kueri terhadap Tipe
Periksa tipe saat kompilasi
Mengeksekusi Kueri terhadap Tipe adalah pelajaran C++ Academy gratis di CoddyKit. Ini adalah pelajaran 1 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar C++ Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus C++ Academy mencakup 4 pelajaran total.
Apa Itu Sifat Tipe?
Header <type_traits> memungkinkan Anda mengajukan pertanyaan tentang tipe saat kompilasi. Setiap sifat merupakan templat yang menyediakan konstanta ::value atau tipe anggota.
is_integral
std::is_integral<T>::value bernilai true untuk tipe bilangan bulat seperti int dan char, dan bernilai false untuk tipe lainnya.
#include <iostream>
#include <type_traits>
int main() {
std::cout << std::is_integral<int>::value << "\n";
std::cout << std::is_integral<double>::value << "\n";
return 0;
}Pintasan _v
C++17 menambahkan templat variabel _v sehingga Anda dapat menulis std::is_integral_v<T>, bukan ::value.
#include <iostream>
#include <type_traits>
int main() {
std::cout << std::is_integral_v<long> << "\n";
std::cout << std::is_floating_point_v<float> << "\n";
return 0;
}Sifat Kategori
Banyak sifat digunakan untuk mengklasifikasikan tipe.
is_pointeris_referenceis_arrayis_classis_enum
#include <iostream>
#include <type_traits>
struct S {};
int main() {
std::cout << std::is_pointer_v<int*> << "\n";
std::cout << std::is_class_v<S> << "\n";
std::cout << std::is_reference_v<int&> << "\n";
return 0;
}Sifat Relasi
Beberapa sifat membandingkan dua tipe.
is_same<A,B>is_base_of<Base,Derived>is_convertible<From,To>
#include <iostream>
#include <type_traits>
struct Base {};
struct Derived : Base {};
int main() {
std::cout << std::is_same_v<int, int> << "\n";
std::cout << std::is_base_of_v<Base, Derived> << "\n";
return 0;
}Sifat Properti
Sifat properti melaporkan kualifikasi dan kemampuan.
is_constis_signedis_trivially_copyableis_default_constructible
#include <iostream>
#include <type_traits>
int main() {
std::cout << std::is_const_v<const int> << "\n";
std::cout << std::is_signed_v<unsigned> << "\n";
return 0;
}Menggunakan Sifat dalam static_assert
Sifat sangat cocok dipadukan dengan static_assert untuk menegakkan persyaratan saat kompilasi.
#include <type_traits>
#include <iostream>
template <typename T>
T add(T a, T b) {
static_assert(std::is_arithmetic_v<T>, "T must be a number");
return a + b;
}
int main() {
std::cout << add(2, 3) << "\n";
return 0;
}Cara Kerja Sifat
Sifat hanyalah templat struktur. Templat umum mewarisi false_type; spesialisasi untuk tipe yang cocok mewarisi true_type. Kompilator memilih kecocokan terbaik.
integral_constant
Semua sifat boolean diturunkan dari std::integral_constant. true_type dan false_type hanyalah alias untuknya, dengan value bernilai true atau false.
#include <iostream>
#include <type_traits>
int main() {
std::cout << std::true_type::value << "\n";
std::cout << std::false_type::value << "\n";
return 0;
}Memeriksa di Dalam Templat
Sifat memungkinkan templat memilih cabang berdasarkan jenis tipe yang diterimanya, sehingga kode generik dapat beradaptasi secara berbeda untuk tipe int, bilangan pecahan, penunjuk, atau kelas.
Hanya Saat Kompilasi
Kueri sifat tidak memerlukan biaya saat waktu proses; kueri tersebut dievaluasi selama kompilasi. Hasilnya ditanamkan ke dalam kode yang dihasilkan.
Uji Cepat
Ingat kembali sintaks praktis C++17.
Ringkasan
Anda telah mempelajari cara memeriksa tipe.
<type_traits>menjawab pertanyaan saat kompilasi::valueatau pintasan_vmengembalikan nilai boolean- Sifat kategori, relasi, dan properti
- Padukan dengan
static_assertuntuk menegakkan batasan
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Mengeksekusi Kueri terhadap Tipe” gratis?
Ya — teks lengkap “Mengeksekusi Kueri terhadap Tipe” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus C++ Academy, upgrade ke CoddyKit PRO. Kursus C++ Academy mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “Mengeksekusi Kueri terhadap Tipe”?
Periksa tipe saat kompilasi Kamu berlatih C++ Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai C++ Academy?
Tidak diperlukan pengalaman sebelumnya. C++ Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 1 dari 4.
Berapa lama pelajaran “Mengeksekusi Kueri terhadap Tipe” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran C++ Academy ini?
Ya. Setiap pelajaran C++ Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- Mengeksekusi Kueri terhadap Tipe
- Mentransformasi Tipe
- Logika Kondisional
- Menulis Trait Kustom