微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

对只有常量成员的对象使用 const 有意义吗?

如何解决对只有常量成员的对象使用 const 有意义吗?

如果一个类只有 const 成员:

struct A {
    const int n;
    const std::string s;
    void f() const;
};

以下几组定义是否等效?

A a1 {...};
const A a2 {...};

A& ref1 = a1;
const A& ref2 = a1;
const A& ref3 = a2;

在这种情况下,const 是多余的吗?

解决方法

const 成员变量一开始很少有意义。


以下几组定义是否等效?

A a1 {...};
const A a2 {...};

A& ref1 = a1;

技术上不,它们不等价,因为你不能这样做:

A& ref1 = a2;
,

要回答标题中的问题:

对只有常量成员的对象使用 const 有意义吗?

恕我直言,您应该决定是否独立于其成员是否为 const 来创建变量 const。这样做的原因是文档、语义和一致性,以及可维护性。

因此,如果您的意图是这部分代码不会对变量进行更改,则添加 const 独立于您当前无法对成员变量进行任何更改的事实。>

您永远不知道将来是否可以在没有 const 成员的情况下扩展该类,或者您需要删除其中一个成员的 const 限定符,然后删除 constness 之前由所有成员提供的 const 将不再完全适用。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。