~typename() 方法中不能使用虚拟方法吗?
#include "stdafx.h"
class varbase
{
public:
~varbase()
{
Finalize();
}
void T()
{
Finalize();
}
virtual void Finalize()
{
printf("varbase.Finalize\n");
}
};
template<class T> class var : public varbase
{
public:
~var()
{
printf("~var\n");
}
virtual void Finalize()
{
printf("var.Finalize\n");
}
};
int main(int argc, char* argv[])
{
var<char> ln;
printf("!\n");
ln.T();
ln.Finalize();
printf("!\n");
printf("end!\n");
return 0;
}
输出的结果是
!
var.Finalize
var.Finalize
!
end!
~var
varbase.Finalize //为什么这里不是输出 var.Finalize ?
环境是vc6