未构造的对象和相关的typeid信息

时间:2017-07-11 20:33:24

标签: c++ constructor rtti default-constructor typeid

#include <iostream>
using namespace std; 

class Base { 
public: 
    ~Base() { 
        static int count = 0; 
        cout << "...calling destructor " << ++count << endl;
    }
};

#include <typeinfo> 

int main () { 

    Base b0; 
    Base b1 = Base(); 
    Base b2();

    cout << typeid(b1).name() << endl;
    cout << typeid(b2).name() << " : " << b2 << endl;

    return 0;
}

输出

4Base
F4BasevE : 1
...calling destructor 1
...calling destructor 2

在上面的代码中,我期望创建三个Base类型的对象,它没有用户定义的构造函数。

在输出中很明显,析构函数只被调用两次。使用b2检查对象typeid,会发出奇怪的F4BasevE字符串(而不是4Base)。

问题:

  1. F4BasevE是什么意思?
  2. 尝试打印1时出现
  3. b2 - 这是什么意思?
  4. 我必须在类中定义什么构造函数才能够 按照定义的方式创建对象b2

0 个答案:

没有答案