C++ C++;:在生产代码中使用typeid
在生产代码中使用C++ C++;:在生产代码中使用typeid,c++,typeid,C++,Typeid,在生产代码中使用typeid通常被认为是不好的做法吗?另外,我注意到typeid返回type\u info,其中包含一些元数据(例如带有类型名称的字符串);有没有办法停用这个 很难说特定语言功能的使用是“坏”还是“好”。这实际上取决于你如何使用它。如果使用typeid是工作的正确工具,那么使用它本身并没有什么错,但是如果您正在解决的任何问题都有更好的解决方案,那么您应该避免使用typeid,而使用更好的解决方案 使用typeid通常不是一个好主意,因为它的使用通常可以通过使用继承和虚拟函数来避免
typeid
通常被认为是不好的做法吗?另外,我注意到typeid
返回type\u info
,其中包含一些元数据(例如带有类型名称的字符串);有没有办法停用这个 很难说特定语言功能的使用是“坏”还是“好”。这实际上取决于你如何使用它。如果使用typeid
是工作的正确工具,那么使用它本身并没有什么错,但是如果您正在解决的任何问题都有更好的解决方案,那么您应该避免使用typeid
,而使用更好的解决方案
使用typeid
通常不是一个好主意,因为它的使用通常可以通过使用继承和虚拟函数来避免。如果您可以用这种方式更新您的系统,那么这样做可能是一个好主意
至于是否可以让typeid
避免返回std::type_info
,这应该不会导致任何性能问题typeid
的计算结果为const std::type\u info&
,因此它不会深度复制它包含的任何字符串信息。大多数实现都将实际的std::type_info
对象存储在对象的虚拟函数表中,因此不会在内部进行复制
dynamic\u cast
您可能不想从库调用返回
typeid
引用。您最好编写一个函数,将typeid
转换为其他对象,例如int
,在这里您可以控制映射。此外,也不能保证typeid
在不同版本的编译器中保持不变。这也意味着您不想将typeid
存储在磁盘上,除非是在运行之间未保留的缓存文件中。