2012-02-05 31 views
9

Olası Çoğalt: sembolü:
What does a colon following a C++ constructor name do?Struct Yapıcı dizimi

Online ancak yapıcı sözdizimi özellikle beni biraz karıştırır aşağıdaki örneğe bulundu. Herkes bana kısa bir açıklama verebilir mi? Teşekkürler. denir zaman

struct TestStruct { 
    int id; 
    TestStruct() : id(42) 
    { 
    } 
}; 
+0

olası yinelenen (http://stackoverflow.com/questions/1272680/what-does-a -colon-following-ac-yapıcı-name-do). Ayrıca bkz. Çiftlerin listesi [burada] (http://stackoverflow.com/questions/3504215/what-does-the-colon-mean-in-a-constructor) –

cevap

20

yapıcı id42 için başlatır. Buna bir initliazation listesi denir. senin şantiye tek amacı üye değişkenleri

struct TestStruct { 
    int id; 
    double number; 
    TestStruct(int anInt, double aDouble) : id(anInt), number(aDouble) { } 
}; 
başlatılırken

sizin örnekte

, Bunu yanı sıra çok sayıda üye ile bunu yapabilir

struct TestStruct { 
    int id; 
    TestStruct() 
    { 
     id = 42; 
    } 
}; 

eşdeğerdir

struct TestStruct { 
    int id; 
    double number; 
    TestStruct() : id(42), number(4.1) 
    { 
    } 
}; 

Kullanışlı

+1

"Aynı şey" biraz daha şövalye ve muhtemelen oldukça yanıltıcı. –

+0

Anlaştık ve düzenlenmiş :) – Vache

+4

Serin, teşekkürler, ama sadece "yararlı" değil, temel alt nesneler, sabitler veya referanslar gibi önemsiz olmayan şekilde başlatılması gereken değişkenler için son derece zor bir gereklilik. –