auto, decltype ve Tür Çıkarımı
Daha temiz kod için derleyicinin türleri auto ve decltype ile çıkarmasını sağlayın
auto, decltype ve Tür Çıkarımı, CoddyKit'te ücretsiz bir C++ Academy dersidir. Bu, 4 dersinin 1. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, C++ Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. C++ Academy kursu toplamda 4 dersten oluşur.
Modern C++'ta Tür Çıkarımı
C++11'den beri derleyici birçok yerde türleri çıkarabilir. Bu, akıllıca kullanıldığında kodu kısaltır ve hata yapma olasılığını azaltır.
auto Anahtar Sözcüğü
auto, türü derleme zamanında başlatıcıdan çıkarır. Değişkenin yine sabit ve statik olarak bilinen bir türü vardır.
auto i = 42; // int
auto d = 3.14; // double
auto s = "hello"; // const char*
auto v = std::vector<int>{1,2,3}; // std::vector<int>auto ve const
Varsayılan olarak auto, en üst düzey const niteleyicisini ve referansları kaldırır. Bunları istediğinizde açıkça ekleyin.
const int n = 10;
auto a = n; // int (const dropped)
const auto& b = n; // const int&Yineleyicilerle auto
Yineleyici türlerinin adları uzundur. auto burada çok kullanışlıdır.
std::map<std::string, int> ages = {{"Ada", 30}};
auto it = ages.find("Ada");
// vs std::map<std::string,int>::iterator it = ...Aralık Tabanlı for ve auto
Kopyalama yapmadan yinelemek için auto& kullanın.
for (const auto& [name, age] : ages) {
std::cout << name << ": " << age << "\n";
}Sondaki Dönüş Türleri
İşlevler, dönüş türünü belirten sonda bir okla birlikte auto'yu dönüş yer tutucusu olarak kullanabilir; bu, şablonlar için kullanışlıdır.
auto add(int a, int b) -> int {
return a + b;
}C++14 Dönüş Türü Çıkarımı
C++14, düz auto dönüş türlerine izin verir; derleyici türü dönüş ifadesinden çıkarır.
auto multiply(double x, double y) {
return x * y; // deduced as double
}decltype: Bir İfadenin Türünü Alma
decltype(expr), derleme zamanında expr türünü verir. auto'dan farklı olarak referansları ve const niteliğini korur.
int x = 0;
int& r = x;
decltype(r) ref = x; // int&
decltype(x) val = 0; // intdecltype(auto)
Çıkarımı decltype kurallarıyla birleştirir; değer kategorisi de dâhil olmak üzere ifadenin tam türünü korur.
auto a = some_func(); // copy
decltype(auto) b = some_func(); // exact type, including referencesauto Kullanımından Kaçınılması Gereken Durumlar
Çıkarılan tür açıkça anlaşılmıyorsa, örneğin büyük sayısal sabitlerde, karma matematiksel işlemlerde veya platforma özgü boyutlarda auto kullanmaktan kaçınınız. Okunabilirlik için türü açıkça belirtiniz.
Neredeyse Her Zaman auto Kullanım Tarzı
Bazı kodlama kılavuzları, sessiz dönüşümleri önlemek için tüm değişkenlerde auto kullanılmasını önerir. Diğerleri açıkça belirtilmiş türleri tercih eder. Bir yaklaşım seçiniz ve bunu tutarlı biçimde uygulayınız.
Kısa Sınama
Bir referans döndürürken auto ile decltype(auto) arasındaki fark nedir?
Özet
auto, türleri başlatıcılardan çıkarır; decltype, bir ifadenin türünü bildirir; decltype(auto) ise referansları koruyarak çıkarım yapar. Gereksiz ayrıntıyı azaltmak için bunları kullanınız, ancak okunabilirliği koruyunuz.
Sıkça Sorulan Sorular
“auto, decltype ve Tür Çıkarımı” dersi ücretsiz mi?
Evet — “auto, decltype ve Tür Çıkarımı” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve C++ Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. C++ Academy kursu toplamda 4 dersten oluşur.
“auto, decltype ve Tür Çıkarımı” dersinde ne öğreneceğim?
Daha temiz kod için derleyicinin türleri auto ve decltype ile çıkarmasını sağlayın C++ Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
C++ Academy öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te C++ Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 1. dersidir.
“auto, decltype ve Tür Çıkarımı” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu C++ Academy dersinde kod yazıp çalıştırabilir miyim?
Evet. Her C++ Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- auto, decltype ve Tür Çıkarımı
- Aralık Tabanlı for, nullptr ve enum class
- Lambda İfadeleri: Yakalama, Değiştirilebilirlik, Genellik
- Yapılandırılmış Bağlamalar ve if-init C++17