c++ - 将类对象数组作为 const 传递给函数,以防止对类对象进行任何修改

标签 c++ constants pass-by-pointer

您好,我是 C++ 的新手,这个问题可能很简单。请耐心等待:)

我有一个类数组 Foo ==> Foo foo_objects[4];

如果我想将这个数组传递给一个函数:

function declaration: void do_something(Foo *foo_objects_ptr);
function call       : do_something(foo_ojects); 

现在我想将这个 foo_objects 数组传递给函数并防止对这些对象进行任何修改。

function declaration: void do_something(const Foo *foo_objects_ptr);
function call       : do_something(foo_ojects);

这是正确的做法吗?这是否保证 foo_objects 中的所有四个对象都不会受到 do_something 方法内部的任何修改,或者只有数组中的第一个对象享有 const 特权?

最佳答案

foo_objects_ptr + ifoo_objects_ptr 具有相同的类型,因此它也是一个常量指针。

因此 foo_objects_ptr[i] 对于所有 i 都是常量。

关于c++ - 将类对象数组作为 const 传递给函数,以防止对类对象进行任何修改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23522121/

相关文章:

perl - 在Perl中使用常量的最佳实践

c++ - 当我离开该方法时,来自静态 vector 的数据保持不变

c++ - 通过 OpenGL 进行图像缩放(KeepAspectRatioByExpanding)

c++ - 与 SDL2 一起构建 SDL2_image(和类似情况)

c++ - 如何识别 LLVM/C++ 中的任何类型的指令?

c++ - 我还应该在 C++11 中返回 const 对象吗?

c++ - 在函数内部初始化 unsigned char 指针返回空指针

assembly - 链接时间优化问题导致带有 ASM 常量的 undefined symbol

c - 使用带有指向双指针的指针的 scanf()

C 程序没有进入任何 for 循环?