目录

函数直接返回和传递引用的区别和取舍

函数直接返回和传递引用的区别和取舍是:可以使用全局的错误代码,这样就可以返回函数结果。可以使用函数返回值作为结果代码,函数的传出参数可以做成引用型参数。也可以把结果和错误码绑在一起,一同返回。

一、函数直接返回和传递引用的区别和取舍

可以使用全局的错误代码,这样就可以返回函数结果。

可以使用函数返回值作为结果代码,函数的传出参数可以做成引用型参数。

也可以把结果和错误码绑在一起,一同返回。

返回值的方式返回一般是:

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只能做有限的操作,限定哪些呢?一句话总结就是:只能读,不能写,但能删能清。