C ++指针用法

时间:2012-07-23 04:50:58

标签: c++ pointers

最近,我一直在使用C ++中的Pointers。根据我所读到的,指针变量用于通过引用(类似于VB中的ByRef)或函数指针(C#中的委托)传递变量。我很确定指针的使用并不局限于这些例子。我希望知道一些需要指针的应用程序。网上的大多数教程都试图通过引用来解释传递。 在此先感谢并抱歉这个noobish问题:)

3 个答案:

答案 0 :(得分:2)

通常,只有在没有任何其他选项时才可以使用指针。例如,在In C中,无法将“通过引用”变量传递给函数。

同样在没有指针的C ++中,你无法真正实现运行时多态性。

答案 1 :(得分:1)

请注意,如果您使用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

答案 2 :(得分:0)

您可能希望使用指针的原因有很多。之一 最明显的是可选参数:

void f(int a, int const* b = NULL);

使用f,您可以测试b是否为空,然后执行操作 后果。

使用指针的另一个常见原因是导航。您 例如,可能想看一下观察者模式。但是这里有 许多其他需要在对象之间导航的情况(使用 动态变化的关系。)

最后,在动态分配对象时使用指针。这个 在C ++中并不像在C#或Java这样的语言中经常出现这种情况 基本上分配一切,或几乎所有动态)。在 C ++,动态分配内容的通常原因是 object不可复制(它具有标识)并且具有生命周期 独立于计划范围。另一个原因是一个子对象 具有动态拓扑的对象:图形的节点等 例。多态性偶尔也是一个原因;如果是实际类型 对象取决于某些运行时条件,您必须分配它 动态。