问题标签 [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 投票
3 回答
1701 浏览

c++ - 在 C++ 中,我们可以使用 { } 进行 C 样式转换吗?

当我一直在阅读有关数据类型转换的信息时,我看到了这个例子:

我知道我们可以使用:

  1. int(c)
  2. (int) c
  3. static_cast<int>(c)

我的问题:

Q1:是int{c}另一种转换数据类型的方式吗?

Q2:经过网上的一些研究,我知道C++强制转换是不同的,它有编译器在编译时检查强制转换的可能性,但是1和2有什么区别?int{c}如果只是另一种铸造方式, 又有什么不同呢?

Q3:还有其他方法可以显式转换/投射吗?

0 投票
2 回答
1255 浏览

c++ - 为什么 C++ 隐式转换有效,而显式转换无效?

以下代码在 C++11 中编译成功:

它包括现代 C++ 的 JSON这个 wandbox中有一个工作示例。

JSON 变量js被隐式转换为字符串。但是,如果我取消注释最后一行,即显式转换,它将无法编译。编译结果在这里

除了这个 json 库的特殊细微差别之外,您如何编写一个类以使隐式转换起作用而显式转换不起作用?
是否有某种构造函数限定符允许这种行为?

0 投票
1 回答
1925 浏览

c++ - 在类外定义显式运算符 bool() 时出错

operator bool()在课外定义函数时遇到问题

我将类外的功能定义为...

我得到这个错误 -error: ‘explicit’ outside class declaration

做错了什么?

0 投票
1 回答
5466 浏览

c# - C# 中的 Char 到 Int 显式转换

我试图在 c# 中学习显式转换。

首先我明确转换stringint

它起作用了,结果是:1234

现在我尝试转换charint

现在的结果是49的 ASCII 值1。如何获取 char1而不是 ASCII 值。请不要太苛刻,这是我在 C# 的第一天 ;)..

0 投票
0 回答
22 浏览

c# - 显式转换语法

下面两行代码有什么区别?从功能上讲,我相信它们是相同的,但是是否有特定的案例或最佳实践可以决定我应该使用哪一个?

0 投票
1 回答
90 浏览

c++ - operator= 在我的自定义字符串类中无法正常工作

我正在尝试使用 std::vector< char > 创建一个自定义字符串类。

请看下面我的代码。

我不明白为什么'mString b = "Hello World";' 'mString a; 时不起作用 a = "你好世界";' 作品。我需要做什么才能使其工作?

先感谢您!

0 投票
1 回答
88 浏览

c++11 - 显式和隐式转换

我很惊讶 thisstruct只能显式转换为bool,在if语句中可以正常工作:

为什么会这样?C++ 标准背后的设计原因是什么?我个人发现第二次转换比第一次更明确。为了更清楚,我希望编译器在这两种情况下都强制具有以下内容:

0 投票
1 回答
419 浏览

c++ - 采用指针的 C++ 显式构造函数

我最近偶然发现了一个接收单个指针参数的显式构造函数。我想知道在这种情况下是否需要显式关键字?因为没有指针的构造函数,所以不能有任何隐式转换。

0 投票
1 回答
595 浏览

c++ - 显式转换运算符模板的优先级和歧义

我一直在我的项目中使用模板化的显式转换运算符,以实现从自定义变体类型的显式转换。重现我的问题的最小示例如下所示(在 C++14 模式下):

我面临的问题是为 static_cast 转换选择的运算符。对于 GCC,这是一种预期的 (1) 情况。输出是:

但是 Clang 拒绝使用以下输出编译它:

为什么 Clang 考虑转换 (2),它显然需要在转换序列中调用额外的构造函数,而 (1) 则不需要?这样做是正确的(然后 GCC 是错误的)吗?

0 投票
2 回答
458 浏览

c++ - 要求通过 static_cast 显式调用 operator double()(X)

我想将我的课程转换为双精度值。这可以通过重载来实现,operator double()但这允许隐式转换,理想情况下我希望能够避免。

有什么方法可以添加此功能,但要求使用double y = static_cast<double>(x)而不是隐式进行转换;double y = x?

我正在使用 C++17。谢谢