2011-06-07 73 views

回答

7

从夏兰麦克海尔的免费在线图书,CORBA Explained Simply

操作的参数有 指定的方向,可以是in (意味着参数传递 从客户机到服务器) ,out (该参数从 服务器传递回客户端)或inout (该参数在 方向都传递)。

因此,一个in参数非常相似,在“传统”功能参数调用者必须通过他们的一个值,该值是使用由服务器来完成其工作。

out参数就像返回值一样,所以调用者永远不会使用值填充它。当函数返回时(假设没有抛出异常),它只是神奇地具有一个值,因为服务器负责将值作为其执行规则的一部分放入其中。您可以根据需要设置多达out参数,从而允许您返回多个不同的对象或值,而无需首先将它们合并到struct中。

inout参数结合了上述两个概念。调用者必须使用有效数据填充所有inout参数,但这些值在函数返回后可能会有所不同,因为服务器可以自由地在其中放入新数据。

+0

那么,我可以这样说:in =按价值传递。 out =传递引用。 inout =通过参考传递? – mihsathe 2011-06-07 14:52:57

+0

这是一种开始思考它的好方法,但是当你开始处理诸如对象引用之类的CORBA类型时,这种类比可能会引起混淆。你可以在参数中传递这些参数,这样就可以通过参考值传递:)你可以期待看到哪些地方会让人困惑!但是,是的,这个比喻并不是最差的地方,因为它与大多数人对参数传递的期望很相关。 – 2011-06-07 15:32:00

+0

in =按值传递, inout =通过引用传递, out = CORBA特有的内容(通过引用传递未初始化的变量)。 如果指定参数为out,那么您在调用中指定的参数无法在被调用的函数中读取......因为CORBA将明确传递未初始化的垃圾。所以对于out参数,只能分配给参数,不能读取。 – Jon 2013-11-23 06:48:00

相关问题