简而言之,我的问题是关于非托管C++中作为指针的成员变量。
在java或c#中,我们有“高级指针”。事实上,我们无法意识到它们中的“指针”。我们通常初始化这样的类的成员:
member = new Member();或
member = null;但在c++中,它变得更加令人困惑。我看到了许多样式:使用new,或者将成员变量留在堆栈中。
在我看来,使用boost::shared_ptr似乎很友好,但是在boost本身源代码中,到处都是new。这是效率的问题,不是吗?
有没有像“尽你所能避免new”之类的行会?
编辑
我意识到说“把它们放在堆栈中”是不恰当的,这里有一种更恰当的说法:当我需要一个object作为我的成员变量时,我应该更喜欢object而不是object*吗?
发布于 2010-06-01 15:40:50
对于如何编写源代码,Boost源代码不是一个很好的示例。Boost库旨在将所有繁琐、困难和容易出错的代码打包起来,这样您就不必在代码中担心它了。
您最好的选择是遵循代码中的两条一般规则:
shared_ptr或scoped_ptr)。发布于 2010-06-01 15:45:28
是的,这里有一个指南--只有在需要时才使用动态分配。很多时候你可以而且应该使用值,而不是指针。例如,您几乎应该总是使用:
vector <string> v;而不是:
vector <string *> v;并动态分配字符串。
https://stackoverflow.com/questions/2951117
复制相似问题