指针问题,将其作为常量发送

Pointer issue sending it as a constant

本文关键字:常量 问题 指针      更新时间:2023-10-16

我再次使用c++工作了一段时间,我对在函数中发送指针作为参数有疑问。

我想发送一个对象指针到一个函数,但具有const状态,以知道指针指向的对象在任何时候都不会被修改。所以我这样做:

int hi(const SomeObject* so)
{
    so->SayHi();
}
SomeObject* so = new SomeObject();
hi(so);

但它没有工作。它说不兼容类型…

另外,如果我将const添加到函数中也会有所不同吗?如:

int hi(const SomeObject* so) const;
谁能给我解释一下这个疑问?由于
int hi(const SomeObject* so)

您已经声明SomeObject为常数。如果没有将sayHi声明为const,这将导致编译器错误。

class SomeObject {
  void sayHi(void) const;
}

如果你的意图是使指针恒定(而不是它指向的对象),它应该是这样的:

int hi(SomeObject* const so)

在这里你可以读到指针和常量指针