C++ 对象数组 + 带有引用和指针的参数
c++ object array + argument with reference and pointer
我不明白第二个参数。到底是什么?最重要的是,他(程序员(使用它来创建一个新的对象数组,最后的大小为 num(变量(。
void expand(const Object &s, Object* &children, int &num)
{
...
children = new Object[num]; // <----
}
从右到左阅读:
当您到达 *
时,将其替换为指针指向。
当您到达 &
时,将其替换为引用 的。
所以children
将是:指向Object
的指针的引用。
第二个参数:对象* &子项对象* 表示子项是指向对象类型的指针。并防止从调用范围接收子项的副本,并让我们直接使用参数变量,因此当您更改子项时:
children = new Object[num];
在调用作用域中更改参数变量,并在扩展函数返回后,可以访问:
new Object[num]
通过您传递给扩展函数的参数变量。
通过引用传递参数是从函数接收信息的另一种方式(它也有其他用法(。
它是
:
指向
Object
的指针的引用
原因是因为它分配动态内存,他可能希望此更改children
反映在函数的调用者中(可能是main()
(。
相关文章:
- 为函数定义符号不明确的指针参数
- 构造函数 (C++) 中的 char 指针参数存在问题
- 按引用调用与按指针参数调用的差异 前递增和后递增
- 为什么具有指针参数的成员函数需要指向指针的指针?
- 通过引用函数传递指针参数是什么意思?
- 从double到double*的指针参数
- void 函数中的指针参数返回不一致的值
- 无法向上转换指针到指针参数
- 将数组动态分配到具有指针参数的函数中
- 模板函数指针参数与构造函数参数
- 使用通用函数指针参数化函数模板的简洁方法
- 如何为C++字符串分配空指针参数?
- C++带有指针参数的函数
- 指针参数的默认值
- 将常量添加到函数模板指针参数
- 如何传递unique_ptr<T>代替原始*输出*指针参数?
- 不带星号的函数指针参数
- 功能指针参数参数转换为const
- 将指针参数传递给双指针参数
- 如何调试指针参数是否通过函数修改