这句话是什么意思?"优秀的C++编程通常不会以复杂的方式使用指针."

lee*_*d00 7 c++ pointers

在获奖答案的另一个问题中,我读到:

...良好的C++编程通常不会以复杂的方式使用指针.

不以复杂的方式使用指针意味着什么?

(我真的希望这不是一个主观的问题)

unw*_*ind 13

当然这是主观的.有些人似乎认为几乎所有的指针都"复杂",而有些人在进行大量算术时很容易在三个(或更多)间接层之间移动,从不会混淆.

  • 我维护你的代码,我是一个精神病患者,我知道你住在哪里,不要使用3级指针间接 (10认同)
  • 您不能指望维护代码的人可以遵循多级间接流. (4认同)

jon*_*son 7

我怀疑它只是意味着整个地方没有原始指针.指针通常应保存在拥有指针的类中,并负责删除指向的对象(例如std :: auto_ptr).这样做通常会使您的代码更简单.


Dav*_*ley 7

作为写这篇文章的人,我至少可以告诉你我的意思.

在一个很好的C++程序中,我熟悉的类型中,指针用于指示对象,主要是因为它们可以被传递并以多态方式使用.它们不习惯通过引用传递,因为这是引用的内容.没有指针算术.原始指针并不多.指针通常不用于构建数据结构,因为您需要的大多数数据结构都内置在标准库中,或者可能是Boost.

换句话说,现代C++通常以与Java相同的方式使用指针,除了Java不使用该单词,因为它没有除了指针之外可访问的原始数据类型之外的其他东西的概念(至少在我上次使用时不是这样)使用Java).翻译是从类似Foo bar = new Foo();(语法不能保证),以smart_ptr<Foo> bar = new Foo;bar.snarf()bar->snarf().至少要开始,Java程序员不需要像他或她移动到C那样接受概念.


Vin*_*vic 6

我对这个答案的理解是"现代"C++不需要太多使用指针,因为你使用的大多数数据结构已经内置在Boost或标准库中.

因此,使用指针的"复杂方法"是指针指向指针和结构遍历,使用指针指向使用指针的真正复杂和可能不安全的方式,例如指针数学或更糟.

我个人认为这取决于你写的是什么代码.有很多代码需要你编写特殊的数据结构,所以我会用一小撮盐把这个句子.