【发布时间】:2022-01-22 22:31:00
【问题描述】:
我可以很容易地说,通过将函数声明为 constexpr,我们在编译时对其进行评估,这样可以节省运行时的时间,因为结果已经生成。
另一方面,虚函数需要在运行时解析。因此,我想我们无法摆脱解决过程。由于constexpr函数的机制,只有结果可以快速获取。
constexpr virtual 函数还有其他好处吗?
【问题讨论】:
-
小心你的第一句话。
constexpr允许函数在编译时执行,它不强制它。如果你想强制执行,你必须使用consteval。 -
“虚拟函数需要在运行时解析。” 一个常见的假设,但事实并非如此。如果类型未知,它们将在运行时解析。如果类型已知,编译器可以解析它。考虑
ConcreteType c; c.virtualfunc();运行时是否需要检查是哪个函数? -
这能回答你的问题吗? Can virtual functions be constexpr?
-
@DrewDormann 是的,在这种情况下,我们实际上并不需要虚拟性。我在考虑指针类型。还是谢谢
标签: c++ c++20 constexpr virtual-functions constexpr-function