如何断言只有在调用对象是const值时才能调用方法?

时间:2017-07-04 20:15:27

标签: c++ copy operator-overloading

出于优化目的,我正在编写一个类,其中复制操作符通过引用传递类的内部。

但是我希望能够编写两个复制操作符,一个接受const值,只能由const对象和非const变量调用,然后可以调用非const方法。

IE我想要类似于......

myClass& operator= (const myClass& copy_to, const myClass& copy_from);
myClass& operator= (myClass& copy_to, myClass& copy_from);

但是在C ++中,复制操作符必须是非静态的,并且只能接受1个参数。如何确保仅从const调用对象调用接受const参数的复制操作符?

如果我的问题有任何问题,请发表评论,以便我可以改进*

1 个答案:

答案 0 :(得分:0)

尊重这个概念很重要。在复制操作之后,用户不期望修改的源对象。这是概念CopyAssignable的后置条件。

t = v //postcondition: The value of v is unchanged. 

源参数的const修饰符向用户说明了这一要求:一个只读对象。

移动分配操作员(MoveAssignable)可能会为您提供移动。 如果没有,我认为在这里省略复制概念是个好主意。