小编Sig*_*att的帖子

通过引用或值作为参数将共享指针传递给类

如果共享指针要被复制到成员变量,是否应该通过引用或值作为参数传递给类?

复制共享指针将增加参考计数,我不想做任何不必要的副本,因此ref计数增量.将共享指针作为参考传递解决这个问题?我认为确实如此,但是还有其他问题吗?

价值传递:

class Boo {
public: 
    Boo() { }
};

class Foo {
public:
    Foo(std::shared_ptr<Boo> boo) 
        : m_Boo(boo) {}
private:
    std::shared_ptr<Boo> m_Boo;
};

int main() {
    std::shared_ptr<Boo> boo = std::make_shared<Boo>();

    Foo foo(boo);
}
Run Code Online (Sandbox Code Playgroud)

通过参考:

class Boo {
public: 
    Boo() { }
};

class Foo {
public:
    Foo(std::shared_ptr<Boo>& boo) 
        : m_Boo(boo) {}
private:
    std::shared_ptr<Boo> m_Boo;
};

int main() {
    std::shared_ptr<Boo> boo = std::make_shared<Boo>();

    Foo foo(boo);
}
Run Code Online (Sandbox Code Playgroud)

c++ shared-ptr

10
推荐指数
1
解决办法
1267
查看次数

标签 统计

c++ ×1

shared-ptr ×1