问题标签 [explicit-conversion]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
36 浏览

c++ - 编译器未能将显式转换应用于用作条件的表达式

这是我的代码:

在 c++ Primer(5th) 中,它说:

编译器将对用作条件的表达式应用显式转换

但是在这种情况下,没有这样的转换。当我删除explicit时,代码可以正常工作。

但是, 当我更改
explicit operator int(){ return i; }
explicit operator bool(){ return i != 0; }

并分别更改if(s == 4)if(s),然后代码工作正常。

看起来转换规则有点混乱,有人可以更详细地解释一下吗?

0 投票
1 回答
86 浏览

c++ - 使用赋值显式转换

具有显式转换构造函数的简单类。

我故意添加一个分配,使其可以从double.

我不想要隐式转换,因为它会导致一些其他问题。但我仍然想要直接分配工作,但它没有。无论如何都可以在MyDouble d = 1.1;不删除explicit关键字的情况下使最后一条语句起作用。

0 投票
2 回答
421 浏览

java - 在 java 中显式转换时,short 128 = byte -128 如何?

我试图了解不同数据类型之间的转换,但我很困惑 128 = -128 in byte 的 short 值以及 1000 in short = -24 in byte 的情况?

我一直在使用以下逻辑将 short 转换为 byte :

1000 十进制 -> 二进制 = 0000 0011 1110 1000

转换为字节时:xxxx xxxx 1110 1000 相当于:232

我确实注意到正确的答案是二进制值的二进制补码,但是我们什么时候使用二进制补码进行转换,什么时候不使用二进制补码将 3450 从短转换为字节时,我没有使用二进制补码但达到了预期的结果。

谢谢!

0 投票
1 回答
314 浏览

c# - 当枚举包含具有相同值的元素时,如何将原始类型值转换为枚举值?

我写了代码:

我希望在输出中看到:

只有简称

或只有长名称

或按字母顺序排序后首先出现的名称,在这种情况下与“仅短名称”一致。

但我没想到会看到程序显示了什么:

输出末尾的短名称。 为什么 ?


我试图重新排列 enum 中的列:

我再次对输出感到惊讶:

为什么 ? 请向我解释这里发生了什么。

0 投票
2 回答
78 浏览

c++ - 为什么这不对转换构造函数进行隐式转换?

所以我有这个代码:

我原以为Foo foo = Bar(13)会使用我的隐式强制转换,然后使用转换构造函数。但它错误

错误:请求从Bar非标量类型转换Foo

不过,这很好用:Foo foo(Bar(13)). 为什么我的隐式转换用于显式转换构造,而不用于隐式转换构造?

我从https://en.cppreference.com/w/cpp/language/copy_initialization得到的规则说:

转换的结果,如果使用了转换构造函数,则为纯右值表达式,然后用于直接初始化对象

0 投票
6 回答
2657 浏览

c++ - 为什么 switch 和 if 语句与转换运算符的行为不同?

为什么switchif语句与转换运算符的行为不同?

编译错误switch quantity is not an integerif语句中被完全识别为bool. (海合会)

0 投票
1 回答
1075 浏览

c++ - 转换迭代器和 const_iterators

一般背景:

我正在尝试构建一个容器,它将充当运行时定义维度的多维数组的包装器 - 事实上,底层数组当然是总大小的一维数组。主要部分是operator []返回子数组的包装器。

由于容器需要迭代器,我目前正在该容器上实现迭代器,包括Container::iteratorContainer::const_iterator. 我努力模仿标准容器迭代器,它们应该尊重随机访问和输出迭代器的所有要求。

我已经注意到以下要求:

  • 公共默认构造函数
  • (当然是复制和移动语义)
  • iterator从 an到 a 的隐式转换const_iterator
  • iterator 和 const_interator 应该是可比较的

具体上下文:

标准容器迭代器根本不提供从 aconst_iterator到 a 的转换iterator,因为删除 const 可能很危险。我已经搜索过这个问题并找到了如何删除 const_iterator 的常量?其中答案提出了不同的技巧来从运算符中删除常量。所以我现在想知道是否应该在指针上实现从 const_iterator 到迭代器ala的显式转换。 const_cast

问题:

const_iterator实现从 a到 a的显式转换有哪些风险(非常量) iterator,它与链接问题的解决方案有何不同(为了便于阅读,复制到此处):

  • 使用提前和距离(我的随机访问迭代器中的恒定时间)

    /li>
  • 使用擦除:

    /li>

作为参考,这里是我的迭代器的简化和部分实现:

0 投票
0 回答
58 浏览

c# - 如何将显式运算符转换为方法组?

我的班级ClassName定义了一个运算符:

这允许以这种方式“投射”:

如果我有类似的方法

我可以使用方法组:

有没有办法只为显式运算符传递方法组?

我在正确语法上的天真实验失败了:

0 投票
1 回答
74 浏览

c# - 如何对 GenericType 的字典进行类型转换

我有一个字典对象,例如:-

现在我想把它输入:-

有什么办法吗?

0 投票
2 回答
451 浏览

c# - c#中数组字符串到数组ulong的转换

我有一个具有值的字符串数组

我需要它转换成 ulong 数组

我应该如何在 c# 中做到这一点
我想我应该添加一些背景。
字符串中的数据来自文本框,我需要在 hexUpDown.Value 参数中写入该文本框的内容。