Chi*_*hin 2 c++ java variables pointers reference
在Java中,当我这样做
Foo bar = new Foo();
Run Code Online (Sandbox Code Playgroud)
bar将是一个包含新构造对象的地址的变量.我的教授称它为参考变量
上一行在C++中与此相当:
Foo *bar = new Foo();
Run Code Online (Sandbox Code Playgroud)
这里,bar是指向对象的指针
那么,Java中的引用变量基本上是指针吗?
另外,当我在C++中这样做时:
Foo bar;
Run Code Online (Sandbox Code Playgroud)
吧也是一个指针?如果没有,那么这是否意味着内存结构之间存在差异
Foo bar;
Run Code Online (Sandbox Code Playgroud)
和
Foo *bar = new Foo();
Run Code Online (Sandbox Code Playgroud)
?
C++中的指针与Java中的引用类似.
但是,Foo bar;是非常不同的Foo *bar = new Foo();.第一个创建具有自动持续时间的Foo实例.它将在创建它的块的末尾被销毁.第二个创建动态分配的Foo实例.它将一直存在,直到它被明确删除.
如果希望在函数返回后存在对象,则不能使用第一个.如果在函数返回后使用指针或对它的引用,则会发生错误.在这种情况下,您必须使用第二种形式.
第一种形式的优点是您不必担心内存管理.它将在其范围的最后自动销毁.使用第二种形式,您必须手动删除它,或使用某种智能指针管理它.