成员函数模板不能为虚函数

#include<iostream>
#include<typeinfo>
using namespace std;

template<typename T>
class A{
	public:
		virtual void beep(){ }
		//成员函数模板不能为虚函数 
		template<typename T2>
		virtual void print(){ }
};
int main()
{
	system("pause");
	return 0;
}
这段代码不能成功编译。因为每个包含虚函数的类具有一个virtual table(vtable),包含该类的所有虚函数的地址,因此vtable的大小是确定的。成员函数模板只有被使用时才会被实例化,将其声明为虚函数会使vtable的大小不确定。所以,成员函数模板不能为虚函数。
阅读更多

没有更多推荐了,返回首页