在 C# 中,当你说Person Foo = new Person();
new Person()
Person
通过分配内存来创建类的对象heap section
- 返回对
reference to memory allocated
Person 类型的这个对象的引用(即除了 之外什么都没有)。
虽然Foo
捕获此引用并使用此引用,您可以访问对象属性,即它的methods and variables
.
在 C++ 中,
它遵循相同的步骤,但在 c++ 中,您可以捕获 a类型reference to object
的 a 。pointer
Person
更具体地说,new
内部调用operator new function
分配 amemory dynamically
以创建对象。
在下面显示的图像中,Person p
( on stack
) 创建了对由 . 返回的对象的引用new Person()
。
age 和 name 是 Object 的成员变量。因此我们可以使用p.name
和轻松访问它们p.age
。
更多关于 c# 和 c++ 中的堆栈和堆内存分配的内容
- 引用 Foo 总是在堆栈上获得内存
object
即这里new Person()
在堆上获得内存,C#
更具体地说,它在哪里获得内存managed heap
更新
当你说它new Person()
在内部为类型的对象分配内存时 - person
。这个对象由Persons members
如图所示。
然后你可以做两件事
您可以在类型变量中捕获此引用,Person
例如Person p = new Person();
这p
是对对象内存位置的引用。因此我可以使用p
.
只是不要存储引用直接使用它,例如new Person().age
会给我人员年龄。这称为匿名对象。