函数直接返回和传递引用的区别和取舍是:可以使用全局的错误代码,这样就可以返回函数结果。可以使用函数返回值作为结果代码,函数的传出参数可以做成引用型参数。也可以把结果和错误码绑在一起,一同返回。
一、函数直接返回和传递引用的区别和取舍
可以使用全局的错误代码,这样就可以返回函数结果。
可以使用函数返回值作为结果代码,函数的传出参数可以做成引用型参数。
也可以把结果和错误码绑在一起,一同返回。
返回值的方式返回一般是:
1,返回值是内置类型(int, float)
2,不需要考虑返回对象拷贝开销(编译器有返回值优化)
3,函数执行出错可以通过构造一个错误的对象或者值返回表示错误
4,函数只返回一个值
// 想到再补充…
经常函数会写成这样:
BOOL XXX(const YYObject& param, ZZObject* result);
返回BOOL指示函数是否正常返回,输入参数写成常量引用放在前面,输出参数使用指针放在后面。
延伸阅读:
二、java中HashMap的keySet()和values()
我们通常说,keySet()返回所有的键,values()返回所有的值,其实是不太对的,因为无论是keySet()和values(),其实都没有实质的内容,且容我慢慢说来。
他们前者返回了一个Set,后者返回了一个Collection,但是Set和Collection都只是接口,既然是接口,那就大有文章可以做。很重要的一点就是,接口可以不是new someClass()的来的,也就是说,它可以不对应与一个类,而只提供一些方法。实际上,HashMap中所有的数据都是放在一个Node<E,V>[]的数组中的,而返回的Set接口也好,Collection也罢,都是直接针对这个Node<E,V>[]数组的,所以,当使用返回的Set接口或者Collection接口进行操作是,实际上操作的还是那个Node<E,V>[]数组。但是,返回的Collection只能做有限的操作,限定哪些呢?一句话总结就是:只能读,不能写,但能删能清。