C++对函数的参数不区分输入参数和输出参数,其他语言有分的吗?
今日看到如下一段,应该是很经典的对于const的分析:
C++对函数的参数不区分输入参数和输出参数,而且经常由于一个返回值不够用,我们会传递几个引用或指针来接收返回值。我们可以用const来标明某参数为输入参数,函数内不会改变此参数的值,如下面一个函数:
bool CopyClass(Value & dest, const Value & src);
其中,Value为用户定义的类,CopyClass函数的功能为拷贝src的内容到dest,src为输入参数,其值不能被改变,dest为输出参数,其他程序员根据函数的定义,就能对函数的功能有个清晰的了解。
看是看懂了,看也有个疑问,C++的函数不区分输入参数和输出参数,而且只有一个返回值。但是其他语言,Java,C#好像也没有区分这些啊?
除了给参数的名字起得好理解,用const限制不改变输入参数,似乎也没有其他办法了吧?
这个应该不止C++如此,其他语言应该也一样吧,本人才疏识浅,故有此一问.....
C++,想说懂你不容易....
[解决办法]
COM 里面一般都要区分是输入参数还是输出参数的, 不过翻译到 C++ 后就是
#define IN
#define OUT
成空了.
C# 里有 ref, out 的定义.
Java 貌似也没有.
[解决办法]
楼主分析的是事实啊
[解决办法]
C++ 所有的参数实际都是值复制的。
但是,我们可以把引用传人,这样就可以在函数内被解析,来模拟传出。
好像所有的都是这样。C# 的 out 要求函数内部必须赋值。
IDL 中的 in 和 out 不是给 C/C++ 用的。
如果说 C/C++ 用在哪里,那就是 RPC 的时候会用到。
[解决办法]
其实也是区分的,比如看STL 里面就说有输入输出吧