tôi đọc this link của Stroustrup với đoạn mã sau:constructors Delegating trong C++() hoặc {}
class X {
int a;
public:
X(int x) { if (0<x && x<=max) a=x; else throw bad_X(x); }
X() :X{42} { }
X(string s) :X{lexical_cast<int>(s)} { }
// ...
};
Câu hỏi của tôi là về dòng:
X() X{42}{}
Có sự khác nhau giữa dấu ngoặc đơn và dấu ngoặc nhọn?
Nếu không có sự khác biệt, tôi có thể sử dụng dấu ngoặc nhọn trong các cuộc gọi chức năng khác không? Hoặc là nó chỉ trong đoàn đại biểu xây dựng? Và cuối cùng Tại sao chúng ta nên có cả hai cú pháp? Đó là một chút mơ hồ.
"tôi có thể sử dụng dấu ngoặc nhọn trong các hàm khác cũng được gọi hay chỉ trong ủy quyền hàm tạo?" - Phái đoàn xây dựng không phải là một cuộc gọi chức năng. Bạn không bao giờ có thể sử dụng '{}' với các cuộc gọi hàm. – emlai
kiểm tra điều này: http://stackoverflow.com/questions/18222926/why-is-list-initialization-using-curly-braces-better-than-the-alternatives –