有可能实现吗?
例如,考虑以下代码片段:
#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
没有什么不同.
在实践中,它可能会起作用(至少对于这么简单的事情)。但这并不意味着您可以信赖它。
关于c++ - 动态改变类的模板参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10863126/