何时使用指针,何时不使用它们

bas*_*ijn 9 c++ pointers

我目前正在用C++做我的第一个真正的项目,所以,对指针来说还是比较新的.我知道它们是什么,并已阅读一些基本的使用规则.可能还不够,因为我还没有真正理解何时使用它们,何时不能.

问题是,大多数地方只提到大多数人过度使用或使用不足.我的问题是,何时使用它们,什么时候不使用?.

目前,在许多情况下我问自己,我应该在这里使用指针还是只将变量本身传递给函数.

例如,我知道你可以发送一个指向函数的指针,这样函数实际上可以改变变量本身而不是它的副本.但是当你只需要获取一次对象的一些信息时(例如方法需要一个getValue()的东西),指针在这种情况下有用吗?

我很乐意看到任何反应,但也有可能有用的链接.因为这是我第一次使用C++,所以我还没有一本好的C++书籍(如果我继续使用c ++,我会考虑买一本书).

Tob*_*ner 19

对于C++的做法和不做:

Scott Meyers提供的有效C++和更有效的C++.

对于指针(和引用):

  • 如果类型适合4个字节并且不希望在返回调用后更改它,则使用pass by value.
  • 如果类型较大并且您不想在返回调用后更改它,则使用通过引用传递给const.
  • 如果参数不能为NULL,则使用引用传递
  • 否则使用指针.

如果你不需要,不要使用原始指针.大多数情况下,智能指针(参见Boost)是更好的选择.


Kri*_*ian 7

c ++ faq:

尽可能使用引用,并在必要时使用指针.

https://isocpp.org/wiki/faq/references#refs-vs-ptrs