gpt4 book ai didi

c++ - 何时实现非常量转换运算符

转载 作者:搜寻专家 更新时间:2023-10-31 00:13:49 25 4
gpt4 key购买 nike

我检查了 StackOverflow 上的问题(特别是 casting operator - const vs non-const )和 user-defined conversion - cppreference.com ,但我没有找到非常量版本的有用示例。

在哪些情况下使用非常量转换运算符有意义?


背景(编辑):这个问题源于一个简单的实现Optional 平面内存布局的模板类。在这里我希望对包含的类型进行隐式转换,我的第一种方法是这样的(没有 const):

    template <typename T>
class Optional
{
public:
operator T() { return value; }
// ...
private:
T value;
// ...
};

在编译器提醒我之后,我很好奇这(当返回一个 rvalue 时)是否在任何情况下都是错误的。

最佳答案

一个可行的原因是强制转换运算符不返回值,而是某种引用;您不希望强制转换违反被强制转换对象的任何 const 特性。

class Type {
HANDLE h;
public:
operator HANDLE const&() const {
return h;
}
operator HANDLE&() { // possibly want the non-const as well
return h;
}
};

根据我的经历,我想我记得有一个这样的例子,它是为了让我们摆脱困境。

关于c++ - 何时实现非常量转换运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25527315/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com