gpt4 book ai didi

c++ - 为什么返回类型上的类型限定符没有意义?

转载 作者:IT老高 更新时间:2023-10-28 21:46:44 24 4
gpt4 key购买 nike

假设我有这个例子:

char const * const
foo( ){
/* which is initialized to const char * const */
return str;
}

避免编译器警告“返回类型的类型限定符没有意义”的正确方法是什么?

最佳答案

你写它的方式是说“返回的指针值是 const”。但是非类类型的右值是不可修改的(从 C 继承),因此标准说非类类型的右值永远不是 const 限定的(即使你指定了最右边的 const 也被忽略了),因为 const 有点多余.一个人不写 - 例子:

  int f();
int main() { f() = 0; } // error anyway!

// const redundant. returned expression still has type "int", even though the
// function-type of g remains "int const()" (potential confusion!)
int const g();

请注意,对于“g”类型,const 是有意义的,但对于从 int const 类型生成的右值表达式,const 会被忽略。所以下面是一个错误:

  int const f();
int f() { } // different return type but same parameters

据我所知,除了获取“g”本身的类型(并将 &f 传递给模板并推断其类型)之外,您无法观察“const” .最后注意“char const”和“const char”表示相同的类型。我建议您解决一个概念并在整个代码中使用它。

关于c++ - 为什么返回类型上的类型限定符没有意义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1607188/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com