2010-08-14 78 views
3

我知道模板类的普通成员函数会在第一次使用时被实例化。但是这不能用于虚拟成员函数,因为它可以通过基类指针访问。这意味着一旦tmeplate类被实例化,虚拟成员函数就会被实例化?如果不是当?当模板类的虚拟成员函数实例化了吗?

回答

5

14.7.1/9 C++ 03:

一种实现不应隐含地实例化一个函数模板,一个构件模板,非虚拟成员函数,一个部件类或类模板的静态数据成员这不需要实例化。如果虚拟成员函数不会被实例化,则没有指定实现是否隐式地实例化类模板的虚拟成员函数。

1

它是实现定义的。

但通常当实例化一个模板类时,将生成新类类型的所有成员。

1

根据C++标准14.6.4.1/4:

如果虚拟函数是隐式 实例化,其 实例化点紧跟 其 包围类的实例化点模板 专业化。

+0

他想知道函数是否被实例化。不在实例化的地方。 – 2010-08-14 15:47:23

相关问题