为什么new关键字返回指针而不是引用
Why does new keyword return pointer instead of reference?
我知道返回指针的new
关键字,所以返回类型是void*
。我愚蠢的问题是,为什么new
必须返回void*
而不是void&
?意味着当new
创建对象时,他们可以使用&
运算符的地址返回该对象的地址。
我知道指针和引用之间的区别。但最后我们使用指针而不是引用。请澄清我的困惑,谢谢。
New返回用于分配内存空间的任何类型的指针,而不是void*
auto p1 = new int[5]; // returns a pointer to an int pointing to the 1st element
auto p2 = new short[5]; // returns a pointer to a short pointing to the 1st element
引用只能分配一次,裸指针可以分配多次。您可以删除内存并分配更多内存,然后将其分配给同一指针。这是主要区别。
delete[] p1;
p1 = new int[20];
我相信new
会返回一个指针,因为它比引用更灵活,而且我认为这在很大程度上与旧的C++和C代码的向后兼容性有关,在旧代码中,NULL
用于指示分配失败。而将非常量引用设置为null是无效的。
此外,new
没有提供对其分配的对象进行命名的方法,而是返回一个指向其分配对象的指针。不能将非常量左值引用绑定到未命名的对象。
相关文章:
- C++取消引用指针.为什么会发生变化
- 深层复制具有自引用指针的类
- Visual c ++,使用字符串引用/指针调用 dll 函数
- std::unordered_map::提取引用/指针失效
- 为什么在引用指针时将 const 放在 & 符号的左侧有效,而在右侧则无效?
- 区分接受常量参数的函数引用/指针和与函数参数同名的非常量参数
- 如何在 c++ 中使用带有数学运算的引用/指针?
- 了解通过引用传递取消引用指针时C++堆/堆栈分配
- 取消引用指针并立即为其分配变量,导致分段错误
- 如何获取指向类(而不是对象)的引用/指针
- 将类型参数传递给自引用指针
- 我应该如何定义返回指针的函数?(引用指针与指针指针)
- 在析构函数内取消引用指针时出现分段错误
- 来自引用指针的内存泄漏
- 引用指针后面的值
- 无法取消引用指针
- 引用指针调用成员函数
- 未定义的引用指针的变量模板在clang中功能,而不是GCC
- 取消引用指针以创建数组的副本
- 有关启动引用指针的引用的问题