ref和const函数中的指针之间的差

问题描述 投票:0回答:2

我正在研究一些CPP代码,并且我想知道为什么该代码无法编译:

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 const是因为它是地址吗?

谢谢。

c++ class const
2个回答
1
投票

指针可以保存对象的内存地址。现在,由于函数const int* f(const int* k) const返回指向constint指针,这意味着您必须将int的内存地址返回给它。

在第一个函数中,您取消引用指针并将其返回给该函数,这意味着您正在返回一个值。这不起作用,因为您应该返回一个指针或另一个对象的内存地址。

您的第二个函数将被编译,因为您将其返回给对象一个地址(在您的情况下为整数int K的内存地址。


0
投票

在第一种情况下,您要取消引用const int* k指针,这意味着您试图返回int值,而函数const int* f(const int* k) const希望返回指针const int*

© www.soinside.com 2019 - 2024. All rights reserved.