gpt4 book ai didi

c++ - 为什么c++中的const转换运算符没有意义?

转载 作者:行者123 更新时间:2023-12-02 18:12:40 25 4
gpt4 key购买 nike

在《C++ Primer》练习14.47中,有一个问题:

Explain the difference between these two conversionoperators:

struct Integral {
operator const int();
operator int() const;
}

我不知道为什么我在 GitHub 上找到的答案说第一个 const 没有意义,因为对于一个转换运算符不应该定义返回类型,这个 const > 这里未指定,会被编译器忽略。但我也发现有些人说这意味着该函数将返回一个 const 值。

所以,我想知道哪一个是正确的,为什么?

最佳答案

it will be ignored by compiler.

这是因为expr#6其中指出:

If a prvalue initially has the type cv T, where T is a cv-unqualified non-class, non-array type, the type of the expression is adjusted to T prior to any further analysis.

这意味着在您的特定示例中,const int 将在进一步分析之前调整为 int,因为 int 是内置类型,并且不是类类型。

which one is right?

尽管第一个转换函数的返回类型是 const int,但在进行进一步分析之前,它会被调整为 int


而第二个转换函数上的 const 意味着该函数内的 this 指针的类型为 const Integral*。这意味着它(转换函数)可以与 const 以及非 const Integral 对象一起使用。这是来自class.this

If the member function is declared const, the type of this is const X*, ...

关于c++ - 为什么c++中的const转换运算符没有意义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72045055/

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