【发布时间】:2014-05-18 07:25:51
【问题描述】:
从const struct 返回非const 数据成员指针可以吗?如下图返回非const指针有什么危害?
widget_t * widget_child(const widget_t * parent)
{
if (!parent)
return NULL;
return parent->child;
}
【问题讨论】:
-
这取决于
widget_t的语义,您尚未描述。是否可以修改const widget_t的子代,还是应该const widget_t表示您无法修改它或其任何后代的小部件? -
更成问题的是来自标准库的
char *strchr(const char *str, char c)。在这里,您必须返回一个指向常量字符串中某个位置的非常量指针。 C++ 不喜欢这样;它打破了 const 正确性的概念。 -
@JonathanLeffler:这就是 C++ 用两个除了保持 const 正确性之外具有相同语义的函数替换这个函数的原因。
标签: c pointers struct constants