Ste*_*owe 18
指针也不错,它们很容易出错.在较新的语言中,他们已经找到了做同样事情的方法,但是用脚射击自己的风险较小.
指针没有错.来吧,爱他们.
对于您的示例,为什么您希望x和y指向同一个内存?为什么不总是称它为x?
还有一点,指针意味着你必须自己管理内存生命周期.较新的语言更喜欢使用垃圾收集来管理内存,并且允许指针会使该任务变得非常困难.
Jam*_*lis 12
当我就异常处理进行讨论时,我会教人们两件事:
指针是你的敌人,因为它们导致了
auto_ptr旨在消除的各种问题.指针是你的朋友,因为对指针的操作不能抛出.
然后我告诉他们祝你有个美好的一天:-)
关键是指针非常有用,在用C++编程时理解它们当然是必要的.如果不理解指针,就无法理解C++内存模型.当您实现一个资源拥有类(例如智能指针)时,您需要使用指针,并且您可以利用它们的无抛出保证来编写异常安全的资源拥有类.
但是,在编写良好的C++应用程序代码中,您永远不必使用原始指针.决不.你应该总是使用一些抽象层而不是直接使用指针:
尽可能使用引用而不是指针.引用不能为空,它们使代码更易于理解,更易于编写,并且更易于代码审查.
使用智能指针来管理您使用的任何指针.智能指针一样shared_ptr,auto_ptr和unique_ptr帮助,以确保您不会泄漏资源或空闲资源过早.
使用标准库中的容器来存储对象集合,而不是自己分配数组.通过使用类似vector和的容器map,您可以确保您的代码是异常安全的(这意味着即使抛出异常,您也不会泄漏资源).
使用容器时使用迭代器.正确使用迭代器要比正确使用指针容易得多,并且许多库实现提供调试支持,帮助您找到错误使用它们的位置.
当您使用旧版或第三方API并且绝对必须使用原始指针时,请编写一个类来封装该API的使用.
C++以Scope-Bound Resource Management(SBRM,也称为Resource Acquisition is Initialization,或RAII)的形式进行自动资源管理.用它.如果你没有使用它,你做错了.