参数传递和返回值
一、pass by value vs. pass by reference(to const)
pass by value:这个数据有多大,就整个包传递,压入到栈中。尽量不要这样传。
pass by reference:像指针但是更漂亮。引用在底部就是个指针,尽量都传引用。例子中传引用且加了const,不希望传过去被更改。
二、return by value vs. return by reference(to const)
可以的情况下,返回值的传递也尽量用by reference。
什么时候不能返回引用:例如,传入两个参数为两个复数,该函数实现一个复数的加法,这时候要在函数内部新创建一个结果。因为函数一结束,这个东西就死亡了,但是却传了一个引用出去,这时候不能传引用。
friend:友元。例子中的友元函数,可以直接拿private中的实部虚部。相当于打破了封装。
三、注意:相同class的各个objects互为友元
没有写friend,但是标黄色的可以直接拿实部虚部。