1
4
实际上,是的,尽管有一些技术,例如 "The Fast Pimpl Idiom," 这可以用来消除或加速堆分配,代价是增加复杂性。
仅当需要这样做时(即,仅当您的用户对您的类执行了堆分配这一事实感到惊讶时)。许多类执行堆分配,包括C++标准库中的许多(例如所有容器)。
可能:-)除非您对类有很高的性能要求,或者您希望类的实例被频繁地创建和销毁,否则我不会太担心它。当然,如果您确实有重要的性能需求,那么PIMPL可能不是一个好的选择。 |
2
4
是的。
我会认为过于激进的评论:)如果你的类对性能如此关键,也许你应该避免使用pimpl习惯用法。如果你代表的是一个数字,这可能是有关的,值得注意。如果您正在隐藏数据库连接的实现,则不值得注释:)
是的,这对用户来说更明显一点,但可能同样不值得为自己担心。
这是一种权衡,但是如果类足够复杂,能够真正从PIMPL习语中获益,那么您可能可以假定堆分配是正常的。如果我使用你的图书馆,我可能不会担心。 |