1. 首页
  2. 编程语言
  3. C++ 
  4. 学习ROS机器人编程(第二版)

学习ROS机器人编程(第二版)

上传者: 2024-07-23 19:35:59上传 PDF文件 14.32MB 热度 13次

18.2 什么是 RTTI

假如在编程中遇到了特殊的问题,而只要我们知道了一个一般指针的准确类型它就会迎刃而解,我们该怎么办?比如,假设允许我们的用户将任一形状变成紫色来表示加亮。用这种方法,他们可以发现屏幕上的所有三角形都被加亮。我们可能自然地想到用虚函数,像 TurnColorIfYouAreA(),它允许一些种类颜色的枚举型参数和 shape::circleshape::squareshape::triangle 参数。为了解决这种问题,多数类库设计者把虚函数放在基类中,使运行时返回特定对象的类型信息。

我们可能见过一些名字为 isA()typeOf() 之类的成员函数,这些就是开发商定义的 RTTI 函数。使用这些函数,当处理一个对象列表时就可以说:“如果这个对象是 triangle 类的,那它就会被加亮。”

有关 RTTI 和类型转换的详细介绍,可以参考运行时类型信息 RTTI 及类型转换。如果你对虚函数和纯虚函数的区别有疑问,请查看虚函数和纯虚函数。对于虚基类、虚函数与纯虚函数的比较,建议阅读虚基类虚函数与纯虚函数函数覆盖虚函数纯虚函数对比

图18-1显示了RTTI的实际应用。如果你想了解更多关于虚函数的内容,不妨看看虚函数详解以及C++_虚函数和纯虚函数区别

用户评论