#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
)。
问题:
F4BasevE
是什么意思? 1
时出现b2
- 这是什么意思?b2
?