为什么RTTI似乎不赞成?

jma*_*erx 4 c++

似乎无处不在,我读到如果不需要RTTI或文章建议不使用它,图书馆就会自夸.有什么不好的,为什么不需要它这么好?

谢谢

Oli*_*rth 14

  1. 因为使用它通常意味着你颠覆了多态(if (type is foo) { do this; } else if (type is bar) { do that; } else ...),这通常意味着你已经将自己设计成一个角落,需要重新考虑你的设计.

  2. 因为C++编译器的作者在优化多态行为方面付出了很多努力,但在优化RTTI的使用方面则不那么容易.

  • RTTI本可以提供帮助但却没有提供帮助的地方正在反思中.由于这个原因,C++使序列化,编组和对象检查比在其他语言中更难.有很多次,我希望C++有一个不错的反思机制...... (3认同)