0Pricing
C++ Academy · Pelajaran

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 int
  • add_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 ::type dengan pintasan _t
  • remove_const, remove_reference, remove_cv
  • add_pointer, add_const, decay
  • common_type, underlying_type untuk 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

  1. Mengeksekusi Kueri terhadap Tipe
  2. Mentransformasi Tipe
  3. Logika Kondisional
  4. Menulis Trait Kustom
← Kembali ke C++ Academy