如何指定const指针的const引用?

时间:2012-01-17 18:35:14

标签: c++ pointers reference const

从我的角度来看可能是一个概念上的错误,但我要说我有一个以char *为参数的函数;也就是说,一个C风格的字符串。但我想确保char *指向某事。我可以使用类似的东西:

foo(const char * const &cstring)

指定我希望cstring成为对const的{​​{1}}引用? 这样我就不需要在const char *内检查NULL指针。

4 个答案:

答案 0 :(得分:4)

这并不能阻止你获得NULL指针......你得到一个指针的引用......这意味着机器中reference-argument所代表的内存地址(或寄存器)中的值 - 代码级别将是指针的地址,而不是指针值本身。因此,指针仍然可以为其分配NULL值。

因此,虽然参数本身可能不是NULL(因为如果参数是指针,可能是这样),但指针指向的值可能为NULL,因此您仍然需要检查NULL指针。 / p>

答案 1 :(得分:4)

您所编写的内容确保引用本身绑定到可能仍然为空的有效指针。没有任何编译时间来做你想做的事。

您最好不要使用C字符串,而是按值或const引用取std::string。如果那不合适,那么拿const char*,在函数文档中输入null不被接受,并做一个运行时声明指针不为空。

答案 2 :(得分:3)

您将const-reference传递给C字符串,但 guarentee cstring本身包含 NULL。您仍然需要在cstring == NULL内手动核对foo。这就像int const&不会因为不允许你传递 0而烦恼。

答案 3 :(得分:0)

引用相当于T* const ptr_name

第二件事是我会说你总是要检查空指针。