首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >我应该更喜欢成员数据中的指针还是引用?

我应该更喜欢成员数据中的指针还是引用?
EN

Stack Overflow用户
提问于 2009-05-21 09:42:01
回答 3查看 105.7K关注 0票数 148

这是一个简单的例子来说明这个问题:

class A {};

class B
{
    B(A& a) : a(a) {}
    A& a;
};

class C
{
    C() : b(a) {} 
    A a;
    B b; 
};

所以B负责更新C的一部分。我通过lint运行代码,它抱怨引用成员:lint#1725。这篇文章谈到了对缺省拷贝和赋值的关注,这是足够公平的,但缺省拷贝和赋值在指针方面也不好,所以这样做没有什么好处。

我总是尽可能地使用引用,因为裸指针引入了不确定的关于谁负责删除该指针的问题。我更喜欢按值嵌入对象,但如果需要指针,我会在拥有指针的类的成员数据中使用auto_ptr,并将对象作为引用传递。

我通常只在成员数据中使用指针,当指针可能为空或可能更改时。对于数据成员来说,有没有其他更喜欢指针而不是引用的原因?

是否可以说包含引用的对象不应该是可赋值的,因为引用一旦初始化就不应该被更改?

EN

回答 3

Stack Overflow用户

发布于 2009-05-21 09:53:56

对象很少允许赋值和其他类似比较的东西。如果你考虑一些像“部门”,“雇员”,“总监”这样的对象的商业模型,很难想象一个员工被分配到另一个员工的情况。

因此,对于业务对象来说,将一对一和一对多关系描述为引用而不是指针是非常好的。

也许将一或零关系描述为指针也是可以的。

所以不能‘我们不能赋值’然后因子。

许多程序员只是习惯于使用指针,这就是为什么他们会找到任何参数来避免使用引用。

拥有一个指针作为成员将迫使你或你的团队成员在使用之前一次又一次地检查指针,并带有“以防万一”注释。如果指针可以是零,那么指针可能被用作一种标志,这是不好的,因为每个对象都必须扮演自己的角色。

票数 38
EN

Stack Overflow用户

发布于 2009-05-21 10:00:38

Stack Overflow用户

发布于 2015-02-06 00:12:32

我不建议引用数据成员,因为你永远不知道谁会从你的类中派生,以及他们可能想要做什么。他们可能不想使用被引用的对象,但作为一个引用,您已经迫使他们提供一个有效的对象。我已经对自己做了足够多的事情来停止使用引用数据成员。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/892133

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档