【发布时间】:2020-06-07 07:49:06
【问题描述】:
我正在研究一些 C++ 代码,我想知道为什么这段代码无法编译:
class A {
int K;
const int* f(const int* k) const {
return *k;
}
};
并且这段代码确实可以编译:
class A {
int K;
const int* f(const int* k) const {
return &K;
}
};
我不明白有什么区别,因为我也试图在第一个返回 const。
&K 是地址吗?
【问题讨论】:
-
*k的类型为const int,但您的函数声称返回const int*。您无法将const int转换为const int*。一个是指针,另一个不是。这是故意的还是问题中的错字? -
首先:您在两个示例中使用了 2 个不同的“k”
-
@Berto99 这是有意的
-
@walnut,你能告诉我&K的类型是什么吗? (大写)&K 类型是否为 const int *?如果是,您能解释一下原因吗?
-
@razlevy
&K的类型为const int*。我不清楚你的问题是什么。该错误与const无关。您得到的错误是因为指针和非指针不能隐式地相互转换。这里也没有“returning by ref”。