小编Bre*_*dak的帖子

制作一个修改类const之外的数据的方法是一个好习惯吗?

我想问一个关于方法的const-correctness的问题.让我来说明一下情况.

class MyClass
{
public:
    ...
    void DiscussedMethod() { otherClass->NonConstMethod(); }

private:
    OtherClass *otherClass;
};
Run Code Online (Sandbox Code Playgroud)

我有一个MyClass保持指针的类OtherClass.在DiscussedMethod它调用OtherClass::NonConstMethod哪些修改一些可见数据.

我想知道,制作DiscussedMethod const(因为它不修改任何成员数据)是否是一个好习惯?这会是一种不好的做法吗?或者两者都很好?

如果有什么OtherClass保留的指针MyClass,并NonConstMethod修改了一些的MyClass"数据(意味着MyClass成员数据会在过程中改变DiscussedMethod呼叫).制作DiscussedMethod const当时的做法是不好的做法?

据我所知,const一个方法主要是代码记录的东西,所以我可能倾向于不做DiscussedMethod const,但我想听听你的意见.

编辑:一些回复考虑了指向的对象是否由对象otherClass拥有MyClass.在我正在使用的场景中情况并非如此.让我们说两个对象并排存在(能够相互修改).我认为这个比喻很好地描述了我的情况.

例如,考虑像双向链表这样的东西,其中每个元素都是一个保持指向其邻居和成员变量的指针的类color.并且它有MakeNeighboursRed改变color其邻居的方法但不影响调用对象的状态本身.我应该考虑制作这种方法const吗?

如果有可能MakeNeighboursRed会打电话给邻居怎么办呢MakeNeighboursRed?因此,最终MakeNeighboursRed调用的对象的状态最初也会改变.

我想感谢大家的意见:-)

c++ methods const

9
推荐指数
1
解决办法
341
查看次数

标签 统计

c++ ×1

const ×1

methods ×1