【发布时间】:2024-03-08 21:05:02
【问题描述】:
我在理解 C++ 中虚拟方法的用途时遇到了一些麻烦。如果方法的对象不是在编译时创建的,方法是否必须是虚拟的?例如,如果您必须在运行时选择一只农场动物,那么该动物的所有方法都需要是虚拟的,因为在用户选择之前您不知道它是否会被创建。如果我错了,请纠正我。
【问题讨论】:
-
为什么这个标签是“C”? C++ 没有“方法”;它们被称为“成员函数”。成员函数没有“它的对象”。一本好书可能是学习 C++ 的良好开端。
-
您不能在运行时创建方法(即在 C++ 中),也不能在运行时创建对象(除了一些包含模板实例或类似的“对象”的奇异定义)。
-
@delnan:如果
new MyClass();在运行时不创建对象,它会做什么?模板不在运行时实例化,它们基本上是编译时代码生成器。 -
@Kleist:是的,当然。我这边的一个错字,我的意思是写“编译时” - 我指的是:“如果它的对象不是在编译时创建的,方法是否必须是虚拟的?”
标签: c++ methods runtime virtual