【发布时间】: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