2011-06-07 70 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

相關問題