【发布时间】:2022-01-13 13:03:56
【问题描述】:
我试图了解以下函数声明中“const”和“&”的用法。我知道最后一个'const'意味着函数不能改变类中的成员变量,'const std::string& message'意味着传递给函数的变量不能改变,但我不明白'const'的含义记录器&'。第一个“const”的目的是什么?为什么在“Logger”之后有一个“&”?这个函数是返回地址还是指针?
const Logger& log(const std::string& message) const;
【问题讨论】:
-
你明白
&在const std::string& message中的用途吗?对于返回类型,它的工作方式相同。 -
这个函数返回一个常量引用。编译器可以将引用实现为指针,但不一定。 stackoverflow.com/questions/57483/…
-
该函数返回“对
Logger的常量引用”。你的问题似乎是"What is a reference?" -
log说“这是一个Logger参考。这是实际的Logger,而不是副本。你不能更改它。” -
如果您了解
const std::string&,那么您也了解const Logger&。一个是参数类型,另一个是返回类型
标签: c++ pointers constants memory-address