要考虑这个指针(从我可以告诉它本身不是一个指针,而是一个导致对象地址的表达式)并开始怀疑"这个&# 34;实际上是指在函数范围内创建和销毁对象的时间?所以不是使用" new"运营商。所以像这样:
void Foo()
{
SomeObject o;
}
如上所述创建对象时会发生什么,以及""什么时候?
答案 0 :(得分:7)
this
是指向该对象的指针,在其成员函数的范围内。
每个对象都有一个地址,无论它是如何分配的,或者它的存储持续时间是多少。因此,无论您使用new
是否无关紧要。
但是,您会发现动态分配的对象的地址在数字上远离其他对象的地址,因为它们通常存储在虚拟内存中的不同位置(您的“堆”与“堆栈”命名法)。
答案 1 :(得分:1)
C指针不仅限于手动分配内存,它们可以指向内存的任何部分。包括非设计用于变量的区域,例如代码段,它是存储机器指令的内存部分。
您可以将指针视为计算机RAM的一种大索引。并且RAM是一个很大的字节数组。
当您声明一个对象时,就像在您的示例中一样,编译器将内存带到某处。这个内存有自己的地址(我上面谈到的大索引),我们可以像任何其他内存地址一样使用它。
因此,在您的情况下,如果您声明:
SomeObject O;
...然后"这"指针具有与manualy声明的指针相同的值,如:
SomeObject 0;
SomeObject *MyThis = &O;