【发布时间】:2023-03-29 14:15:01
【问题描述】:
当您在对象名称之前使用 * 运算符“取消指针”访问它的指针,就好像它是一个对象一样,它到底在做什么?
我问这个是因为我有指向存储大量数据的对象的指针,我不希望 C++ 复制它或做任何昂贵的事情。我能够复制这个对象和使用其中的函数之间有一条细线。
【问题讨论】:
当您在对象名称之前使用 * 运算符“取消指针”访问它的指针,就好像它是一个对象一样,它到底在做什么?
我问这个是因为我有指向存储大量数据的对象的指针,我不希望 C++ 复制它或做任何昂贵的事情。我能够复制这个对象和使用其中的函数之间有一条细线。
【问题讨论】:
你会得到一个左值,它引用位于指针给定地址的对象。
一般来说,单独取消引用指针永远不会导致复制。当获得的引用用于构造相同类型的新对象(在将值传递给函数时隐式发生)或用作赋值运算符的参数时,就会发生复制。
【讨论】:
当你取消引用一个指针时,你只是在访问它的元素;你没有复制任何东西。这两个调用做同样的事情:
(*p).element = 1;
p->element = 1;
如果你想要一个详尽的解释;你可以看看this question
【讨论】:
'*' returns the object as an l-value this pointer is pointing。就这么简单。
【讨论】:
解引用运算符或间接运算符,用“*”表示(即 星号),是在类 C 语言中发现的一元运算符 包括指针变量。它对指针变量进行操作,并且 返回与指针地址处的值等效的左值。 这称为“取消引用”指针。
(http://en.wikipedia.org/wiki/Dereference_operator)
当你使用指针指向一个对象时,指针只是指向对象的地址,但它不会复制任何东西.....
【讨论】: