问题标签 [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.
c++ - 在 C++ 中,我们可以使用 { } 进行 C 样式转换吗?
当我一直在阅读有关数据类型转换的信息时,我看到了这个例子:
我知道我们可以使用:
int(c)
(int) c
static_cast<int>(c)
我的问题:
Q1:是int{c}
另一种转换数据类型的方式吗?
Q2:经过网上的一些研究,我知道C++强制转换是不同的,它有编译器在编译时检查强制转换的可能性,但是1和2有什么区别?int{c}
如果只是另一种铸造方式, 又有什么不同呢?
Q3:还有其他方法可以显式转换/投射吗?
c++ - 为什么 C++ 隐式转换有效,而显式转换无效?
以下代码在 C++11 中编译成功:
它包括现代 C++ 的 JSON。这个 wandbox中有一个工作示例。
JSON 变量js
被隐式转换为字符串。但是,如果我取消注释最后一行,即显式转换,它将无法编译。编译结果在这里。
除了这个 json 库的特殊细微差别之外,您如何编写一个类以使隐式转换起作用而显式转换不起作用?
是否有某种构造函数限定符允许这种行为?
c++ - 在类外定义显式运算符 bool() 时出错
我operator bool()
在课外定义函数时遇到问题
我将类外的功能定义为...
我得到这个错误 -error: ‘explicit’ outside class declaration
做错了什么?
c# - C# 中的 Char 到 Int 显式转换
我试图在 c# 中学习显式转换。
首先我明确转换string
为int
它起作用了,结果是:1234
现在我尝试转换char
为int
现在的结果是49
的 ASCII 值1
。如何获取 char1
而不是 ASCII 值。请不要太苛刻,这是我在 C# 的第一天 ;)..
c# - 显式转换语法
下面两行代码有什么区别?从功能上讲,我相信它们是相同的,但是是否有特定的案例或最佳实践可以决定我应该使用哪一个?
c++ - operator= 在我的自定义字符串类中无法正常工作
我正在尝试使用 std::vector< char > 创建一个自定义字符串类。
请看下面我的代码。
我不明白为什么'mString b = "Hello World";' 'mString a; 时不起作用 a = "你好世界";' 作品。我需要做什么才能使其工作?
先感谢您!
c++11 - 显式和隐式转换
我很惊讶 thisstruct
只能显式转换为bool
,在if
语句中可以正常工作:
为什么会这样?C++ 标准背后的设计原因是什么?我个人发现第二次转换比第一次更明确。为了更清楚,我希望编译器在这两种情况下都强制具有以下内容:
c++ - 采用指针的 C++ 显式构造函数
我最近偶然发现了一个接收单个指针参数的显式构造函数。我想知道在这种情况下是否需要显式关键字?因为没有指针的构造函数,所以不能有任何隐式转换。
c++ - 显式转换运算符模板的优先级和歧义
我一直在我的项目中使用模板化的显式转换运算符,以实现从自定义变体类型的显式转换。重现我的问题的最小示例如下所示(在 C++14 模式下):
我面临的问题是为 static_cast 转换选择的运算符。对于 GCC,这是一种预期的 (1) 情况。输出是:
但是 Clang 拒绝使用以下输出编译它:
为什么 Clang 考虑转换 (2),它显然需要在转换序列中调用额外的构造函数,而 (1) 则不需要?这样做是正确的(然后 GCC 是错误的)吗?
c++ - 要求通过 static_cast 显式调用 operator double()(X)
我想将我的课程转换为双精度值。这可以通过重载来实现,operator double()
但这允许隐式转换,理想情况下我希望能够避免。
有什么方法可以添加此功能,但要求使用double y = static_cast<double>(x)
而不是隐式进行转换;double y = x
?
我正在使用 C++17。谢谢