出于优化目的,我正在编写一个类,其中复制操作符通过引用传递类的内部。
但是我希望能够编写两个复制操作符,一个接受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参数的复制操作符?
如果我的问题有任何问题,请发表评论,以便我可以改进*
答案 0 :(得分:0)
尊重这个概念很重要。在复制操作之后,用户不期望修改的源对象。这是概念CopyAssignable的后置条件。
t = v //postcondition: The value of v is unchanged.
源参数的const
修饰符向用户说明了这一要求:一个只读对象。
移动分配操作员(MoveAssignable)可能会为您提供移动。 如果没有,我认为在这里省略复制概念是个好主意。