【发布时间】:2016-12-18 20:24:38
【问题描述】:
class myMem{};
class Test{
public:
initMem1(myMem& mInput){/*initialize _mem1*/}
initMem2(shared_ptr<myMem> &pmInput){/*initialize _mem2*/}
myMem _mem1;
shared_ptr<myMem> _mem2;
};
Test myTest;
myTest()
因此,在上面的代码中,成员属于一个类。一个成员是值类型,另一个成员是 shared_ptr 类型。哪种方式更适合班级成员?此外,我还有初始化成员的功能。哪种方式更好?
一般来说,通过引用传递给 shared_ptr 比直接通过引用传递有什么优势?
【问题讨论】:
-
...一个要求你有一个
shared_ptr? -
问题应该是:“通过引用传递给
shared_ptr与直接通过值传递给shared_ptr相比有什么优势?”答案是:更便宜。 -
对于编译器来说,它们都是不同的类型。你不能真正比较苹果和橙子。
Test&和shared_ptr<Test>&不是相同的引用类型。至于从后者获得前者的性能成本,它可能只是额外间接的成本。但后者携带更多信息 -
与您询问传递对指针的引用与传递对对象的引用的优势几乎相同的答案。如果要更改指向的对象,请引用指针。如果您只想更改对象本身,请使用直接引用;它更便宜并且限制更少..
标签: c++ c++11 reference shared-ptr smart-pointers