Mentransformasi Tipe
remove_const, decay, dan lainnya
Mentransformasi Tipe adalah pelajaran C++ Academy gratis di CoddyKit. Ini adalah pelajaran 2 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.
Transformasi Tipe
Selain memeriksa, <type_traits> dapat menghasilkan tipe baru dari tipe lama. Sifat ini menyediakan tipe anggota ::type, dengan pintasan _t pada C++14 dan versi setelahnya.
remove_const
std::remove_const_t<const int> menghasilkan int. Ini berguna ketika Anda memerlukan versi tipe yang dapat diubah.
#include <iostream>
#include <type_traits>
int main() {
using T = std::remove_const_t<const int>;
std::cout << std::is_same_v<T, int> << "\n";
return 0;
}remove_reference
std::remove_reference_t<int&> menghasilkan int. Fitur ini merupakan dasar penerusan sempurna dan penulisan kode generik.
#include <iostream>
#include <type_traits>
int main() {
using T = std::remove_reference_t<int&>;
std::cout << std::is_same_v<T, int> << "\n";
return 0;
}add_pointer dan add_const
Transformasi juga dapat menambahkan kualifikasi.
add_const_t<int>=const intadd_pointer_t<int>=int*
#include <iostream>
#include <type_traits>
int main() {
using P = std::add_pointer_t<int>;
std::cout << std::is_same_v<P, int*> << "\n";
return 0;
}std::decay
std::decay_t<T> meniru konversi yang terjadi ketika meneruskan berdasarkan nilai: menghapus referensi dan kualifikasi cv, serta mengonversi larik dan fungsi menjadi penunjuk.
#include <iostream>
#include <type_traits>
int main() {
using T = std::decay_t<const int&>;
std::cout << std::is_same_v<T, int> << "\n";
return 0;
}Peluruhan Larik
decay mengubah tipe larik menjadi penunjuk, persis seperti ketika larik diteruskan ke fungsi.
#include <iostream>
#include <type_traits>
int main() {
using T = std::decay_t<int[5]>;
std::cout << std::is_same_v<T, int*> << "\n";
return 0;
}remove_cv
std::remove_cv_t<const volatile int> menghapus const dan volatile, sehingga menghasilkan int biasa.
#include <iostream>
#include <type_traits>
int main() {
using T = std::remove_cv_t<const volatile int>;
std::cout << std::is_same_v<T, int> << "\n";
return 0;
}common_type
std::common_type_t<A,B> menghasilkan tipe yang dapat menerima konversi dari keduanya, seperti hasil dari a + b.
#include <iostream>
#include <type_traits>
int main() {
using T = std::common_type_t<int, double>;
std::cout << std::is_same_v<T, double> << "\n";
return 0;
}underlying_type
Untuk enumerasi, std::underlying_type_t<E> mengungkap tipe bilangan bulat yang menjadi dasar enumerasi tersebut.
#include <iostream>
#include <type_traits>
enum class Color : unsigned char { Red, Green };
int main() {
using U = std::underlying_type_t<Color>;
std::cout << std::is_same_v<U, unsigned char> << "\n";
return 0;
}Menggabungkan Transformasi
Transformasi dapat disusun. Untuk menormalkan tipe yang diteruskan, Anda sering menggabungkan beberapa transformasi, misalnya remove_cv_t<remove_reference_t<T>>, yang pada dasarnya merupakan langkah awal yang dilakukan decay.
Mengapa Transformasi Penting
Fungsi generik sering menerima const T& atau T&&, tetapi memerlukan tipe dasarnya untuk mendeklarasikan variabel lokal atau nilai kembalian. Sifat transformasi menyediakan tipe yang bersih tersebut.
Uji Cepat
Ingat kembali fungsi decay.
Ringkasan
Anda telah mempelajari transformasi tipe.
- Sifat menyediakan
::typedengan pintasan_t remove_const,remove_reference,remove_cvadd_pointer,add_const,decaycommon_type,underlying_typeuntuk hasil turunan
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Mentransformasi Tipe” gratis?
Ya — teks lengkap “Mentransformasi 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 “Mentransformasi Tipe”?
remove_const, decay, dan lainnya 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 2 dari 4.
Berapa lama pelajaran “Mentransformasi 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