C++ 数据成员什么时候该使用引用,什么时候该使用指针?

qc123456 2011-04-14 03:23:35
我觉得除了自己分配内存的memeber应该用指针其他情况都应该尽量使用引用,各位大侠有什么见解?
...全文
812 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
leaderxuanddan 2013-04-06
  • 打赏
  • 举报
回复
@18# const 类 & 引用 完全可以
yujishui 2011-07-26
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 jshoong 的回复:]

Move Effiective C++ 第一条就有
使用指针:
一、是你考虑到存在不指向任何对象的可能
二、是你在不同时刻指向不同的对象
如果你总是指向一个对象并且一旦指向的对象后就不会改变指向,那么你应该使用引用
当你知道必须指向一个对象并且不想改变其指向时,或者在重载操作符并为防止不必要的语义误解时,
你不应该使用指针。而除此之外的其它情况下,刚应该使用指针
[/Quote]

++1
huer0625 2011-04-15
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 mdl13412 的回复:]

C++设计哲学就是用“引用”代替“指针”,即能使用“引用”的时候就不使用“指针”。
其实,“引用”在现代编译体系结构下底层实现就是一个“指针”,但是其类型安全由编译器替你去完善,比如你可以引用”空指针“,但是如果你使用“空引用”在编译器就不会通过,所以说用引用更安全也更方便。
对于多态,很多人认为只有指针才能实现,其实用引用也是正确的,要是还不明白就看看《Inside The C++ Obj……
[/Quote]
++1
huer0625 2011-04-15
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 jshoong 的回复:]

Move Effiective C++ 第一条就有
使用指针:
一、是你考虑到存在不指向任何对象的可能
二、是你在不同时刻指向不同的对象
如果你总是指向一个对象并且一旦指向的对象后就不会改变指向,那么你应该使用引用
当你知道必须指向一个对象并且不想改变其指向时,或者在重载操作符并为防止不必要的语义误解时,
你不应该使用指针。而除此之外的其它情况下,刚应该使用指针
[/Quote]
++1
FrankHB1989 2011-04-15
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 mdl13412 的回复:]
其实,“引用”在现代编译体系结构下底层实现就是一个“指针”……
[/Quote]
扯吧。
还有,你确定什么叫“多态”?
凝霜 2011-04-15
  • 打赏
  • 举报
回复
C++设计哲学就是用“引用”代替“指针”,即能使用“引用”的时候就不使用“指针”。
其实,“引用”在现代编译体系结构下底层实现就是一个“指针”,但是其类型安全由编译器替你去完善,比如你可以引用”空指针“,但是如果你使用“空引用”在编译器就不会通过,所以说用引用更安全也更方便。
对于多态,很多人认为只有指针才能实现,其实用引用也是正确的,要是还不明白就看看《Inside The C++ Object Model》
FrankHB1989 2011-04-15
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 dl_liuyuan 的回复:]

尽可能先考虑简捷地使用“引用”,不能用“引用”或引用不方便时再“考虑”指针。
[/Quote]
包装指针为智能指针比包装引用自然(至于方不方便就不一定了)。
direction917 2011-04-15
  • 打赏
  • 举报
回复
我觉得对于类来说,如果拷贝构造函数写好了的话,直接返回对象是可以的。
引用和指针其实是一样的。
wongys 2011-04-15
  • 打赏
  • 举报
回复
其实引用最多和最主要的用在传递大对象时用的,为了节省拷贝开支,提高运行速度、减少资源浪费。。
Defonds 2011-04-15
  • 打赏
  • 举报
回复
指针传递的是地址值,引用传递的是地址。
jshoong 2011-04-15
  • 打赏
  • 举报
回复
Move Effiective C++ 第一条就有
使用指针:
一、是你考虑到存在不指向任何对象的可能
二、是你在不同时刻指向不同的对象
如果你总是指向一个对象并且一旦指向的对象后就不会改变指向,那么你应该使用引用
当你知道必须指向一个对象并且不想改变其指向时,或者在重载操作符并为防止不必要的语义误解时,
你不应该使用指针。而除此之外的其它情况下,刚应该使用指针
qc123456 2011-04-15
  • 打赏
  • 举报
回复
谢谢各位捧场。
这是一个人在baidu上给我的回复:
相同点:
都是地址的概念;
指针指向一块内存,它的内容是所指内存的地址;而引用则是某块内存的别名。
不同点:
指针是一个实体,而引用仅是个别名;
引用只能在定义时被初始化一次,之后不可变;指针可变;引用“从一而终”,指针可以“见异思迁”;
引用没有const,指针有const,const的指针不可变;
引用不能为空,指针可以为空;
“sizeof引用”得到的是所指向的变量(对象)的大小,而“sizeof指针”得到的是指针本身的大小;
指针和引用的自增(++)运算意义不一样;
引用是类型安全的,而指针不是(引用比指针多了类型检查)

我的补充:
引用还是更适合指向目标不变的情况(修改引用的地址也能改变引用的指向),引用型数据成员必须在构造函数初始化也是一个限制。
Louistao 2011-04-15
  • 打赏
  • 举报
回复
这个问题很别扭

不需要形参接受副本就用引用,指针也可以传递数据,但是他们之间还是有区别的
能用引用的,那就还是用引用,因为指针可能为空,而引用在定义的时候已经初始化了
平常心006 2011-04-14
  • 打赏
  • 举报
回复
C++的数据成员应该使用指针。
引用一般用于函数调用,能降低思维难度。
宁谧青风 2011-04-14
  • 打赏
  • 举报
回复
引用。。。
sylcc_ 2011-04-14
  • 打赏
  • 举报
回复
优先考虑用引用,使用引用安全一点。
pathuang68 2011-04-14
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 dl_liuyuan 的回复:]

尽可能先考虑简捷地使用“引用”,不能用“引用”或引用不方便时再“考虑”指针。
[/Quote]

这个意见蛮不错的:)
dl_liuyuan 2011-04-14
  • 打赏
  • 举报
回复
尽可能先考虑简捷地使用“引用”,不能用“引用”或引用不方便时再“考虑”指针。
jhldelphi 2011-04-14
  • 打赏
  • 举报
回复
两者都是传地址;
引用时有确定类型,无法实现虚函数的滞后绑定。

64,646

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧