我应该只为一次调用在免费商店上创建对象吗?

特里维特

假设代码位于if块内,那么在自由存储中创建对象与仅对其进行一次调用之间有什么区别:

    auto a = aFactory.createA();
    int result = a->foo(5);

并直接在返回的指针上进行调用?

    int result = aFactory.createA()->foo(5);

性能上有什么区别吗?哪种方式更好?

#include <iostream>
#include <memory>

class A 
{
public:
    int foo(int a){return a+3;}
};

class AFactory
{
public:    
    std::unique_ptr<A> createA(){return std::make_unique<A>();}
};

int main()
{
    AFactory aFactory;
    bool condition = true;
    if(condition)
    {
        auto a = aFactory.createA();
        int result = a->foo(5);   
    }
}
比詹德

在您的简单情况下,它不会有什么不同,因为(主)函数在创建和使用a.

如果再多几行代码,a对象的销毁将发生在 中的if的末尾main,而在一行的情况下,它会在该单行的末尾销毁。但是,如果更复杂的析构函数会对此产生影响,那将是糟糕的设计class A

由于编译器优化,性能问题应始终通过使用分析器对具体代码进行测试来回答。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何只为 jquery 上的多个按钮调用一次事件?

来自分类Dev

我可以只为REST API声明一次凭据吗?

来自分类Dev

HTML:我应该只为主图像创建一个部分吗?

来自分类Dev

HTML:我应该只为主图像创建一个部分吗?

来自分类Dev

如何只为程序填充一次HashMap对象?

来自分类Dev

我可以一次上传3个APK到Play商店吗?

来自分类Dev

Ladon只为for循环返回一次

来自分类Dev

难道不是应该只每帧调用一次layoutSubviews吗?

来自分类Dev

(android)应该只第一次调用setAdapter()吗?

来自分类Dev

我可以一次查询 C# 对象上的所有布尔属性,寻找单个匹配项吗?

来自分类Dev

我应该在程序中多久调用一次sql.Open?

来自分类Dev

我应该在每次更改后一次还是单独调用Entity Framework SaveChanges

来自分类Dev

C#Reactive Extensions-我应该退回一次性用品吗?

来自分类Dev

我应该使用useRef来存储一次性初始化数据吗?

来自分类Dev

我应该使用高级GeoDjango库进行一次简单的计算吗?

来自分类Dev

Dart:一次创建多个对象

来自分类Dev

我应该多次调用dns_get_record()还是使用DNS_ANY调用一次?

来自分类Dev

我可以配置IntelliJ,使其不记得我的上一次提交消息吗?

来自分类Dev

sp_updatestats应该多久调用一次?

来自分类Dev

Pygame的按键应该只调用一次功能

来自分类Dev

我可以一次解析/编译ChaiScript脚本并多次调用吗?

来自分类Dev

我可以使用多线程一次使相同的rest调用多次吗?

来自分类Dev

我可以在计时器中每20秒调用一次动作吗?

来自分类Dev

python imaplib:我只需要调用一次.close()吗?

来自分类Dev

我只能在Application中调用一次Realm.getInstance()吗?

来自分类Dev

Django tastpie,我如何添加/保存两个模型并创建一次调用

来自分类Dev

我可以一次性放置多个对象吗?

来自分类Dev

我可以一次检查Java数组中所有对象的实例化吗?

来自分类Dev

如何一次在2d数组上创建/移动多个对象?

Related 相关文章

  1. 1

    如何只为 jquery 上的多个按钮调用一次事件?

  2. 2

    我可以只为REST API声明一次凭据吗?

  3. 3

    HTML:我应该只为主图像创建一个部分吗?

  4. 4

    HTML:我应该只为主图像创建一个部分吗?

  5. 5

    如何只为程序填充一次HashMap对象?

  6. 6

    我可以一次上传3个APK到Play商店吗?

  7. 7

    Ladon只为for循环返回一次

  8. 8

    难道不是应该只每帧调用一次layoutSubviews吗?

  9. 9

    (android)应该只第一次调用setAdapter()吗?

  10. 10

    我可以一次查询 C# 对象上的所有布尔属性,寻找单个匹配项吗?

  11. 11

    我应该在程序中多久调用一次sql.Open?

  12. 12

    我应该在每次更改后一次还是单独调用Entity Framework SaveChanges

  13. 13

    C#Reactive Extensions-我应该退回一次性用品吗?

  14. 14

    我应该使用useRef来存储一次性初始化数据吗?

  15. 15

    我应该使用高级GeoDjango库进行一次简单的计算吗?

  16. 16

    Dart:一次创建多个对象

  17. 17

    我应该多次调用dns_get_record()还是使用DNS_ANY调用一次?

  18. 18

    我可以配置IntelliJ,使其不记得我的上一次提交消息吗?

  19. 19

    sp_updatestats应该多久调用一次?

  20. 20

    Pygame的按键应该只调用一次功能

  21. 21

    我可以一次解析/编译ChaiScript脚本并多次调用吗?

  22. 22

    我可以使用多线程一次使相同的rest调用多次吗?

  23. 23

    我可以在计时器中每20秒调用一次动作吗?

  24. 24

    python imaplib:我只需要调用一次.close()吗?

  25. 25

    我只能在Application中调用一次Realm.getInstance()吗?

  26. 26

    Django tastpie,我如何添加/保存两个模型并创建一次调用

  27. 27

    我可以一次性放置多个对象吗?

  28. 28

    我可以一次检查Java数组中所有对象的实例化吗?

  29. 29

    如何一次在2d数组上创建/移动多个对象?

热门标签

归档