typeid
đại diện cho toán tử C++ RTTI cũng là từ khóa C++. Nó trả về một đối tượng std::type_info
chứa thông tin cụ thể (động).Tại sao tôi cần phải #include <typeinfo> khi sử dụng toán tử typeid?
Từ những gì tôi hiểu được từ nhiều nguồn khác nhau, một PHẢI bao gồm <typeinfo>
khi sử dụng typeid
, nếu không chương trình không đúng định dạng. Trong thực tế, trình biên dịch gcc5.2 của tôi thậm chí không biên dịch chương trình nếu tôi không bao gồm tiêu đề đã đề cập trước đó. Tôi không hiểu tại sao việc đưa vào tiêu đề bắt buộc phải sử dụng từ khóa C++ . Tôi hiểu bắt buộc một tiêu đề cho bất cứ khi nào chúng tôi sử dụng một số đối tượng được khai báo/xác định trong tiêu đề đó, nhưng typeid
không thuộc loại lớp. Vậy lý do đằng sau việc thực thi này bao gồm tiêu đề <typeinfo>
là gì?
Đối với một cái gì đó tương tự, '' cũng cần phải được bao gồm trong trường hợp bạn có thể hoặc có thể không mong đợi. –
chris
@chris Tôi nghĩ chỉ khi bạn sử dụng rõ ràng 'std :: initializer_list', điều này có ý nghĩa hơn một chút, vì' std :: initializer_list' là một lớp của riêng nó, không phải là từ khóa, mặc dù được sử dụng ngầm bởi ngôn ngữ chính. – vsoftco
Có, mặc dù có một số trường hợp phức tạp hơn như 'auto list = {1, 2, 3};' và 'cho (auto x: {1, 2, 3}) {}'. – chris