简而言之,我的问题是关于在非托管 C++ 中作为指针的成员变量。
在java或c#中,我们有“高级指针”。事实上,我们无法察觉到其中的“指针”。我们通常这样初始化一个类的成员:
member = new Member();
或
member = null;
但在c++中,它变得更加困惑。我见过很多风格:使用new
,或者把成员变量留在栈中。
在我看来,使用 boost::shared_ptr
似乎很友好,但在 boost 本身的源代码中,到处都是 new
。这是效率问题,不是吗?
是否有类似“尽力避免 new
”之类的准则?
编辑
我意识到说“将它们留在堆栈中”是不合适的,这里有一个更合适的说法:当我需要一个 object
作为我的成员变量时,我应该更喜欢 object
比 object*
?
最佳答案
Boost 源代码并不是您应该如何编写源代码的好例子。 Boost 库旨在将所有繁琐、困难和容易出错的代码包装起来,这样您就不必担心代码中的这些问题。
最好的办法是在代码中遵循两条通用规则:
- 不要在不需要使用指针的地方使用指针
- 在确实需要使用指针的地方,使用智能指针(如
shared_ptr
或scoped_ptr
)
关于c++ - C++中如何管理成员变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2951117/