Tag: typeid

在`typeid`代码中使用'?:`奇怪

在我正在开发的其中一个项目中,我看到了这个代码 struct Base { virtual ~Base() { } }; struct ClassX { bool isHoldingDerivedObj() const { return typeid(1 ? *m_basePtr : *m_basePtr) == typeid(Derived); } Base *m_basePtr; }; 我从来没有见过像那样使用typeid 。 为什么这么奇怪的跳舞?: ,而不是只是做typeid(*m_basePtr) ? 有什么理由吗? Base是一个多态类(具有虚拟析构函数)。 编辑:在这个代码的另一个地方,我看到这个,它似乎是等价的“多余的” template<typename T> T &nonnull(T &t) { return t; } struct ClassY { bool isHoldingDerivedObj() const { return typeid(nonnull(*m_basePtr)) == […]

在C ++中使用“typeid”与“typeof”

我想知道在C + + typeid和typeof之间有什么区别。 以下是我所知道的: 在C ++头文件typeinfo中定义的type_info文档中提到了typeid 。 typeof在C的GCC扩展和C ++ Boost库中定义。 另外,这里是我创build的testing代码testing,发现typeid不会返回我所期望的。 为什么? main.cpp中 #include <iostream> #include <typeinfo> //for 'typeid' to work class Person { public: // … Person members … virtual ~Person() {} }; class Employee : public Person { // … Employee members … }; int main () { Person person; Employee employee; […]