如何断言只有当调用对象是常量值时才能调用方法?
How to assert that a method can only be called if the calling object is a const value?
出于优化目的,我正在编写一个类,其中复制运算符通过引用传递类的内部。
但是,我希望能够编写两个复制运算符,一个接受常量值并且只能由 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 调用对象调用?
如果我的问题有任何问题,请发表评论,以便我改进*
尊重这个概念很重要。用户不希望在复制操作后修改源对象。这是 CopyAssignable 概念的后置条件。
t = v //postcondition: The value of v is unchanged.
源参数的const
修饰符向用户显式表示此要求:只读对象。
也许一个移动 ctor ou 移动分配运算符(MoveAssignable(可以为您服务。 如果没有,我认为在这里省略复制概念是个好主意。
相关文章:
- 函数签名与调用的函数不匹配,常量字符[]和字符*之间的区别?
- 在 C++20 之前,在带有常量或引用字段的"A"上调用 'std::vector<A>
- 什么时候可以使用常量装饰调用我的重载函数?
- 是否可以使用非常量指针调用非常量函数,以及当两个unique_ptrs指向同一个对象时程序的行为方式?
- 函数调用在常量表达式中必须具有常量值
- 调用 cout 时如何在结构中输出常量文本?
- 对于非常量指针类型的参数,未调用具有常量指针模板类型参数的功能
- Gmock 常量方法不调用,而是调用原始方法
- C++:允许临时对象调用非常量成员函数的设计理念是什么?
- 编译器错误:函数调用在常量表达式中必须有一个常量值
- 调用构造函数与将内联常量定义为默认参数
- 可作为常量调用的比较对象
- 现代C++编译器是否能够避免在某些条件下两次调用常量函数
- 在什么条件下调用常量取消引用运算符
- 在复制构造函数中调用常量引用的方法
- 从另一个类对象调用常量函数
- 错误:调用常量没有匹配函数
- 如果存在非常量限定的私有方法,为什么不能在非常量对象上调用常量限定的方法
- 强制调用常量版本成员函数
- c++中的函数调用常量传播