快速提问。我想了解 *this 在 C++ 中的行为。如果这太明显或重复,请原谅我,因为搜索引擎将 * 解释为通配符,我的搜索有点不够启发性。
我正在使用别人的代码,它有许多看起来像这样的函数:
(N 的类型是结构)
N N::someMethod() const {
N n = *this;
// do a function that modifies internal values of the struct
n.modify();
return n;
}
发生的情况是它返回原始结构的修改副本,而原始结构未修改。
我假设不知何故*这是在制作副本,但我不明白为什么/如何。这与结构有关吗?它是函数声明中的 const 吗?幕后是否还有其他的魔法?
我的理解是'this'是一个指针。我以为当你 * 一个指针时,它只是取消引用该指针?(所以我希望 n 指向与原始内存相同的内存块,但显然它没有,所以我的直觉很糟糕)
如果您愿意,请随时指出我的方式的错误。没关系,我很聪明,可以深入了解引擎盖下发生的事情的详细技术讨论,我保证!