2012-02-05 31 views
9

thể trùng lặp:
What does a colon following a C++ constructor name do?Struct Constructor Cú pháp

tôi thấy ví dụ dưới đây tuy nhiên trực tuyến cú pháp cho các nhà xây dựng bối rối cho tôi một chút đặc biệt là: biểu tượng. Bất cứ ai có thể xin vui lòng cho tôi một lời giải thích ngắn gọn? Cảm ơn.

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

thể trùng lặp của (http://stackoverflow.com/questions/1272680/what-does-a -colon-sau-ac-constructor-name-do). Xem thêm danh sách các bản sao [ở đây] (http://stackoverflow.com/questions/3504215/what-does-the-colon-mean-in-a-constructor) –

Trả lời

20

Các constructor khởi id-42 khi nó được gọi. Nó được gọi là danh sách initliazation.

Trong ví dụ của bạn, nó tương đương với

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

Bạn có thể làm điều đó với một số thành viên cũng

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

Nó rất hữu ích khi mục đích duy nhất của nhà xây dựng của bạn được khởi tạo các biến thành viên

struct TestStruct { 
    int id; 
    double number; 
    TestStruct(int anInt, double aDouble) : id(anInt), number(aDouble) { } 
}; 
+1

"Cùng một điều" là một chút ung dung, và có lẽ khá gây hiểu lầm. –

+0

Đồng ý và chỉnh sửa :) – Vache

+4

Thật tuyệt, cảm ơn, nhưng nó không chỉ "hữu ích", nhưng nó là một điều cần thiết hoàn toàn cho các biến phải được khởi tạo không nhỏ, chẳng hạn như các lớp con cơ bản, hằng số hoặc tham chiếu. –

Các vấn đề liên quan