Aşağıdaki gibi bir genel işlev yazıyorum. BenC++ Şablonlarda genel başlatma hakkında
///
T a = T()
cout << a << endl;
// do something with iterators
ben bekliyorum olarak başlatıldı değeri 0
olduğunu görebilirsiniz içine başlatma değiştirirseniz iken
template<class Iterator, class T>
void foo(Iterator first, Iterator last) {
T a;
cout << a << endl;
// do something with iterators
}
typedef vector<double>::iterator DblPtr;
vector<double> values;
foo< DblPtr, int>();
Bu fonksiyonlar, değişken a
için tanımlanmamış bir değerini yazdırır.
Ben değişken varsayılan değerle başlatılır, ama T a = T()
ararsanız ben kopya kurucu Optimizasyon nedeniyle hala varsayılan biridir T()
değeriyle denilen gerektiğine inanıyoruz T a
çağırırsanız.
Bu 2 satırın arkasındaki farkın ne olduğunu ve bunun neden gerçekleştiğini anlayamıyorum?
Büyük açıklama! Hepsi açık ve çok teşekkürler. –