最近,我一直在涉足 C++ 中的指针。根据我的阅读,指针变量用于通过引用(类似于VB中的ByRef)或函数指针(C#中的委托)传递变量。我很确定指针的使用不仅限于这些示例。我希望知道一些需要指针的应用程序。网络上的大多数教程都试图解释通过引用传递的用法。在此先感谢,并对这个愚蠢的问题感到抱歉:)
3 回答
通常,只有在没有其他选择时才能使用指针。例如,在 C 中,无法将变量“通过引用”传递给函数。
同样在没有指针的 C++ 中,您无法真正实现运行时多态性。
请注意,如果您使用 C++ 编程,您应该从智能指针开始学习:
http://en.wikipedia.org/wiki/Smart_pointer
智能指针等价于指针,但更安全。
这是使用 c++ 智能指针的一个很好的教程和练习:
http://www.ida.liu.se/~TDDD38/exercises/Smart_Pointer_II/Smart_pointer_II-11-en.pdf
您可能需要使用指针的原因有很多。最明显的一个是可选参数:
void f(int a, int const* b = NULL);
使用f
,您可以测试是否b
为空,并采取相应的行动。
使用指针的另一个非常常见的原因是导航。例如,您可能想查看观察者模式。但是还有许多其他情况需要在对象之间导航(关系动态变化)。
最后,在动态分配对象时使用指针。这在 C++ 中并不像在 C# 或 Java 等语言中那样频繁(它们基本上分配所有内容,或者几乎所有内容都是动态分配的)。在 C++ 中,动态分配某些东西的通常原因是对象不可复制(它具有标识)并且具有独立于程序范围的生命周期。另一个原因是具有动态拓扑的对象中的子对象:例如图形的节点等。多态性有时也是一个原因;如果对象的实际类型取决于某些运行时条件,则必须动态分配它。