我知道模板类的普通成员函数只要第一次使用它就会被实例化。但是这不能用于虚拟成员函数,因为它可以通过基类指针访问。这意味着只要实例化tmeplate类,就会实例化虚拟成员函数?如果不是的话?
答案 0 :(得分:5)
14.7.1/9
:
实现不应隐式实例化函数模板,成员模板,非虚拟成员函数,成员类或不需要实例化的类模板的静态数据成员。如果虚拟成员函数不会被实例化,则实现是否隐式实例化类模板的虚拟成员函数是未指定的。
答案 1 :(得分:1)
这是实施定义。
但通常在实例化模板类时,会生成新类类型的所有成员。
答案 2 :(得分:1)
根据C ++标准14.6.4.1/4:
如果虚函数是隐式的 实例化,它的观点 实例化紧随其后 其实例化的重点 封闭类模板 专业化。