【问题标题】:Pass an array of class objects as const to a function to prevent any modification of the class objects将类对象数组作为 const 传递给函数,以防止对类对象进行任何修改
【发布时间】:2014-06-24 16:27:05
【问题描述】:

您好,我是 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 特权?

【问题讨论】:

  • 使用引用而不是指针。如果需要动态数组,请使用std::vector
  • 是的,通过const 指针对任何元素的任何访问都将受到保护,不会被更改。除非有人鬼鬼祟祟地使用const_cast,但没有办法避免这种情况——C++ 的设计目的是让你可以随心所欲地开枪。

标签: c++ constants pass-by-pointer


【解决方案1】:

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

所以foo_objects_ptr[i] 是所有i 的常量。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-01-01
    • 2015-02-01
    • 1970-01-01
    • 2019-07-23
    • 1970-01-01
    • 2015-11-22
    • 2012-03-30
    相关资源
    最近更新 更多