I was reading about CORBA我发现了一些有趣的东西。 CORBA接口方法使用返回类型定义,例如
中的string
module HelloApp
{
interface Hello
{
string sayHello();
oneway void shutdown();
};
};
并且还有一个关键字out
,当它作为参数传递时,表示返回值。 For example here
struct Data { ... };
typedef sequence<Data> DataSeq;
interface DataIterator {
DataSeq next_n_items(in unsigned long how_many);
void destroy();
};
interface SearchEngine {
DataSeq query(
in string search_condition,
in unsigned long how_many,
out DataSeq results,
out DataIterator iter);
};
似乎多余。 为什么你需要两者?
答案 0 :(得分:1)
操作只能有一个返回值,但可以有多个输出参数。用户决定使用什么,但在很多情况下,操作返回一个值,然后用户更容易获得返回值,以便他可以编写例如(使用IDL到C ++ 11):
int32_t my_result = foo->my_operation ();
如果有一个out参数,他必须写
int32_t my_result {};
foo->my_operation (my_result);
第一个示例更简单,也更安全,无需将my_result显式初始化为默认值。