百科问答小站 logo
百科问答小站 font logo



c++中指针的作用是什么呢?单纯的用引用不可以吗? 第1页

  

user avatar   haozhi-yang-41 网友的相关建议: 
      

一开始看到这题目,我就觉得这个问题是不是我读反了?我仔细的读了第二遍才确定没读错。


C++的引用本质上就是指针的语法糖:引用能做到的,指针都能无损的做到——反之则不行。

对比引用和指针,其中对编程影响最大的功能缺失,莫过于引用不能修改指向

随手列举一些问题:

swap 机制被迫用到开销极大的值拷贝;

数据结构只能在定义时确定,无法动态调整(除了数组外,几乎所有数据结构的增删都依赖指针的动态调整);

delete 后置为 NULL 的低成本低开销规避野指针操作无法实现(这意味着你没有任何办法去标识”野引用“——除非你不用 delete);

延迟加载/singleton等机制会相当难实现。


总之,C++的引用只是一个方便编译器进行激进优化的语法糖,类似于 const/restrict 之类的关键字一样,有它更好,没它照样能跑。所以,它本身就没考虑到它会去”替代“些什么。因此,对比指针,单从功能的完备性来说,就不是能放在一起比的。




  

相关话题

  感觉 C++ 很简单,但为何这么多劝退的? 
  有什么像a=a+b;b=a-b;a=a-b;这样的算法或者知识? 
  C++中除以2和右移1有什么区别? 
  在有能够转化为C、C++、Java的第四代语言Raptor的情况下,为什么还需要C等程序设计语言? 
  怎能给孩子讲用c++解决鸡兔同笼问题,百钱买百鸡等问题,也就是c++的for循环嵌套枚举? 
  怎能给孩子讲用c++解决鸡兔同笼问题,百钱买百鸡等问题,也就是c++的for循环嵌套枚举? 
  C和C++的适用场合?如何创建C++实现的动态库?动态库如何保证向后兼容,即二进制兼容性? 
  关于C++23网络库的争论,大家有什么看法? 
  qt5 msvc 版本如何检查内存泄漏? 
  C++需要反射吗? 

前一个讨论
C++的运行时多态,性能损失有多大?
下一个讨论
为什么只听说封杀了中兴和华为,却没封杀小米?





© 2025-06-23 - tinynew.org. All Rights Reserved.
© 2025-06-23 - tinynew.org. 保留所有权利