C++ `this` 指针

标签 c++ c++14 this move

1) this 指针与其他指针有何不同?据我了解,指针指向堆中的内存。如果有指向它们的指针,这是否意味着对象总是在堆中构造?

2)我们可以在 move 构造函数或 move 赋值中窃取this指针吗?

最佳答案

How this pointer is different from other pointers?

this 指针仅存在于非static 类成员函数的上下文中。它也是隐含的,它的名字是一个保留关键字,它总是一个prvalue expression。 .否则,它与任何其他指针相同。

As I understand pointers point to the memory in heap.

指针可以指向内存中的任何东西。它不仅限于堆,也不限于 objects .

Can we steal this pointer in move constructor or move assignment?

this 始终是纯右值表达式。不能为它分配新地址,就像不能为 5 分配新值一样。事实上,对象在其整个生命周期中都存在于内存中的一个位置。他们的地址永远不会改变,试图通过为 this 分配新地址来改变它是不合逻辑的。从一个对象 move 会 move 对象在别处的状态,但对象本身仍然存在于它之前的地址。

关于C++ `this` 指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56061464/

相关文章:

c++ - 错误 C2146 : syntax error : missing ',' before identifier 'A1'

c++ - 如何静态断言 std::array 类成员在 c++11 中进行排序?

c++ - 将字符范围转换为 int

c++ - 按值传递的整数常量,视为 constexpr?

javascript - this 指向 IE8 中的窗口

Java 这个(空)

c++ - 在软件中实现 SSE 4.2 的 CRC32C

c++ - 为什么模板允许具有非 constexpr 构造函数的 constexpr 函数成员?

c++ - "this"指针上的指针运算

c++ - 更快的算法来计算有多少数字可以被一个范围内的特定整数整除