有可能做到吗?
例如,考虑以下代码片段:
#include <iostream>
using namespace std;
template <typename T> class A {
public:
void print() {
T var;
cout << sizeof(var) << endl;
}
};
int main() {
A<int>* c = new A<int>;
c->print();
A<char>* d = reinterpret_cast<A<char>*>(c);
d->print();
}
这种做法有没有“危险”?
最佳答案
是的,这将导致未定义的行为。 A<char>
和A<int>
是完全不相关的类型。因此,将广播重新解释为B
没什么不同。
实际上,它可能会起作用(至少对于这种简单的事情而言)。但这并不意味着您可以依靠它。