首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在C++中管理成员变量

如何在C++中管理成员变量
EN

Stack Overflow用户
提问于 2010-06-01 15:38:31
回答 7查看 543关注 0票数 2

简而言之,我的问题是关于非托管C++中作为指针的成员变量。

在java或c#中,我们有“高级指针”。事实上,我们无法意识到它们中的“指针”。我们通常初始化这样的类的成员:

代码语言:javascript
复制
member = new Member();

代码语言:javascript
复制
member = null;

但在c++中,它变得更加令人困惑。我看到了许多样式:使用new,或者将成员变量留在堆栈中。

在我看来,使用boost::shared_ptr似乎很友好,但是在boost本身源代码中,到处都是new。这是效率的问题,不是吗?

有没有像“尽你所能避免new”之类的行会?

编辑

我意识到说“把它们放在堆栈中”是不恰当的,这里有一种更恰当的说法:当我需要一个object作为我的成员变量时,我应该更喜欢object而不是object*吗?

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2010-06-01 15:40:50

对于如何编写源代码,Boost源代码不是一个很好的示例。Boost库旨在将所有繁琐、困难和容易出错的代码打包起来,这样您就不必在代码中担心它了。

您最好的选择是遵循代码中的两条一般规则:

  • 不要在不需要使用指针的地方使用指针
  • 在需要使用指针的地方,使用智能指针(如shared_ptrscoped_ptr)。
票数 15
EN

Stack Overflow用户

发布于 2010-06-01 15:45:28

是的,这里有一个指南--只有在需要时才使用动态分配。很多时候你可以而且应该使用值,而不是指针。例如,您几乎应该总是使用:

代码语言:javascript
复制
vector <string> v;

而不是:

代码语言:javascript
复制
vector <string *> v;

并动态分配字符串。

票数 8
EN

Stack Overflow用户

发布于 2010-06-01 15:53:47

页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2951117

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档