c++ - C++中如何管理成员变量

标签 c++ oop pointers

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

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

member = new Member();

member = null;

但在c++中,它变得更加困惑。我见过很多风格:使用new,或者把成员变量留在栈中。

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

是否有类似“尽力避免 new”之类的准则?

编辑

我意识到说“将它们留在堆栈中”是不合适的,这里有一个更合适的说法:当我需要一个 object 作为我的成员变量时,我应该更喜欢 objectobject*?

最佳答案

Boost 源代码并不是您应该如何编写源代码的好例子。 Boost 库旨在将所有繁琐、困难和容易出错的代码包装起来,这样您就不必担心代码中的这些问题。

最好的办法是在代码中遵循两条通用规则:

  • 不要在不需要使用指针的地方使用指针
  • 在确实需要使用指针的地方,使用智能指针(如 shared_ptrscoped_ptr)

关于c++ - C++中如何管理成员变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2951117/

相关文章:

c++ - 游戏 Actor 脚本

c++ - 对 std::hash<string> 的 undefined reference

php - 从我的数据库中选择并发送邮件

javascript - 面向对象的 JavaScript 最佳实践问题 : How should I configure my objects for the following

c++ - Qt Creator 调试器中 vector 成员的值是多少?

c++ - 如何用Qt5编译QwtPlot3d?

c++ - 关于 typeinfo 中的 before 函数

php - 我需要为每个 Controller 创建一个模型吗?更好的做法是什么?

c - 连续声明的变量的内存地址顺序是否总是降序?

c++ - 函数指针(列表)