【发布时间】:2012-09-20 00:19:40
【问题描述】:
在 Java 世界中长期冒险之后,我回到了 C++,并且正在重新掌握 C++ 如何使用指针的概念/语法。
举几个例子。
在java中
public void MyFunc(MyClass class)
{
class.DoSomething;
}
和
一样 void MyFunc (MyClass* class)
{
class->DoSomething;
}
和
public MyClass GetMyClass()
{
return class;
}
是一样的(看着它我意识到我必须将我返回的内容存储在一个指针中,所以它不一样......)
MyClasss* GetMyClass()
{
return (&class); // could you say here "return <-MyClass"
}
相反,这可能是相同的(看起来这应该返回位于“&MyClass”的 MyClass 对象,因此您可以从返回的任何位置直接在此位置编辑此对象)
MyClasss GetMyClass()
{
return (&class);
}
你也可以使用->来访问存储在指针指向的地址的对象,你可以使用
最后,有什么意义
void MyFunc(MyClass1 &class1, MyClass2 &class2)
对
void MyFunc(MyClass1* class1, MyClass* class2)
是不是您首先在地址处传递数据存储,而在示例 2 中您传递的是您想要使用的数据的地址?
【问题讨论】:
-
MyClass是类的名称,而不是变量。 -
我知道这个,把它放在那里向你展示它是它的一个实例,等一下,为你编辑它......
-
Java 是按值传递的,你知道的。
-
你们从字面上看就是这样。冷静下来,停止投票。我表明我已经对此进行了思考,并且我提出了有效的问题,在某种程度上我需要他们回答以便我能理解。显然,由于除了 8 个反对票之外还有 5 个赞成票,其他人也希望对其进行解释。所以你们这些投反对票的人正在为一个负面的社区做出贡献。
-
@iccthedral 值得澄清的是,尽管 Java 是按值传递的,但所有对象名称实际上都是对象的引用/指针,因此 Java 会自动通过引用传递对象。
标签: c++ pointers reference dereference