TA的每日心情 | 慵懒 2016-4-21 12:07 |
---|
签到天数: 3 天 连续签到: 1 天 [LV.2]偶尔看看I 累计签到:3 天 连续签到:1 天
|
马上加入,结交更多好友,共享更多资料,让你轻松玩转电力研学社区!
您需要 登录 才可以下载或查看,没有账号?立即加入
×
用C++做了一段时间毕业设计了,突然有一天被困在传指针还是传引用的问题上。后来翻看了《C++ 编程规范》,并结合了项目实际情况,总结出下面结论:9 p2 |! O. r( Z2 Q0 H, p; f. F, k* I
传指针- 如果函数保存了地址。例:复制地址给类成员变量、把地址保存在函数内静态局部变量中。
- 如果参数是可以选的。例:允许传入NULL值。
* b' v+ r. T& z( g0 ^+ `$ K
传引用- 如果函数没有保存地址。例:仅修改了参数引用对象。
- 如果参数是不可选的,并且要求必须提供有效对象做参数。
# |# m* n* Z6 |% n 如果函数保存了地址,可能在以后直接使用或者修改地址指向的对象。如果使用传引用的话,调用者不知道需要在栈(stack)还是在堆(heap)上分配引用对象资源。一旦调用者传入的引用对象是在栈上,编译器自动回收后,函数保存的地址将不再有效!
" G- T! k5 Q( f! D 而函数保存了地址时使用传指针,就在提示调用者传入的指针参数指向的对象应当分配在堆上。% `( F! F. Z3 |5 c5 f# t) B
当然也有推荐全部使用传指针的,理由是传值和传引用容易使调用者混淆。我不赞同这个观点,我打算按照上述规则重新修改毕业设计。 |
|