İşlev ve Sınıf Şablonlarına Yeniden Bakış
Uygun şablon söz dizimiyle genel işlevler ve sınıflar yazın
İşlev ve Sınıf Şablonlarına Yeniden Bakış, 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.
Şablonlar Neden Kullanılır?
Şablonlar, kodu bir kez yazıp derleyicinin kullanılan her tür için belirli sürümler oluşturmasını sağlar. Genel programlamanın temel taşıdır.
İşlev Şablonu Sözdizimi
template <typename T> ile tür parametrelerini bildirin. İşlev imzasında T kullanın.
template <typename T>
T max_of(T a, T b) {
return (a > b) ? a : b;
}
std::cout << max_of(3, 7); // int
std::cout << max_of(2.5, 1.5); // doubletypename ve class
typename ve class anahtar sözcükleri, şablon parametresi bildirimlerinde birbirinin yerine kullanılabilir. Modern stilde typename daha yaygındır.
Birden Fazla Type Parametresi
Şablonların birden fazla tür parametresi olabilir.
template <typename T, typename U>
auto combine(T a, U b) -> decltype(a + b) {
return a + b;
}Tür Olmayan Parametreler
Şablon parametreleri tür olmayan değerler de olabilir: tam sayılar, numaralandırmalar ve işaretçiler.
template <typename T, size_t N>
struct StaticArray {
T data[N];
};
StaticArray<int, 10> arr;Sınıf Şablonları
Genel sınıflar aynı şablon sözdizimini kullanır. Üye ve yöntemler için tür parametresini kullanın.
template <typename T>
class Stack {
std::vector<T> data_;
public:
void push(T x) { data_.push_back(std::move(x)); }
T pop() { T t = std::move(data_.back()); data_.pop_back(); return t; }
};
Stack<int> s1;
Stack<std::string> s2;Sınıf Dışındaki Üye İşlevleri
Sınıf dışındaki tanımlarda her üye için şablon ön eki gerekir.
template <typename T>
class Stack {
public:
void push(T x);
};
template <typename T>
void Stack<T>::push(T x) {
data_.push_back(std::move(x));
}Varsayılan Şablon Bağımsız Değişkenleri
Varsayılan işlev bağımsız değişkenleri gibidir. Çağıran belirtmediğinde kullanılır.
template <typename T = int>
class Box {
T value;
};
Box<> b; // T is intŞablon Bağımsız Değişkeni Çıkarımı
Derleyici, şablon bağımsız değişkenlerini çoğu zaman çağrıdan çıkarır.
template <typename T>
void print(T x) { std::cout << x; }
print(42); // T deduced as int
print("hello"); // T deduced as const char*
print<double>(3); // explicitSınıf Şablonu Bağımsız Değişkeni Çıkarımı (C++17)
C++17, kurucudan çıkarılabildikleri durumlarda sınıf şablonu bağımsız değişkenlerini belirtmemenize olanak tanır.
std::pair p(1, 2.5); // pair<int, double>
std::vector v{1, 2, 3}; // vector<int>İki Aşamalı Arama
Şablonlarda arama iki aşamada gerçekleşir: tanım sırasında (bağımlı olmayan adlar) ve örnekleme sırasında (bağımlı adlar). Bu, birçok hatayı tanım zamanında yakalar.
Hata İletileri
Şablon hataları göz korkutucu olabilir. Aşağıdan yukarıya doğru okuyun, kaynak konumuna odaklanın ve tanılamayı iyileştirmek için C++20 kavramlarını kullanın.
Kısa Kontrol
std::vector<int> belirtmeden std::vector v{1, 2, 3}; ifadesinin derlenmesini hangi özellik sağlar?
Özet
Şablonlar, derleme zamanında türe özgü kod oluşturur. İşlev ve sınıf şablonlarını template <typename T> ile tanımlayın. Mümkün olduğunda derleyici bağımsız değişkenleri çıkarır; gerektiğinde açıkça belirtin.
Sıkça Sorulan Sorular
“İşlev ve Sınıf Şablonlarına Yeniden Bakış” dersi ücretsiz mi?
Evet — “İşlev ve Sınıf Şablonlarına Yeniden Bakış” 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.
“İşlev ve Sınıf Şablonlarına Yeniden Bakış” dersinde ne öğreneceğim?
Uygun şablon söz dizimiyle genel işlevler ve sınıflar yazı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.
“İşlev ve Sınıf Şablonlarına Yeniden Bakış” 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
- İşlev ve Sınıf Şablonlarına Yeniden Bakış
- Şablon Özelleştirme: Kısmi ve Tam
- Değişken Sayılı Şablonlar ve Parametre Paketleri
- constexpr İşlevleri ve if constexpr