相关疑难解决方法(0)

什么时候应该使用static_cast,dynamic_cast,const_cast和reinterpret_cast?

有什么用途:

  • static_cast
  • dynamic_cast
  • const_cast
  • reinterpret_cast
  • C风格演员 (type)value
  • 功能式演员 type(value)

如何决定在哪些特定情况下使用哪个?

c++ pointers casting c++-faq

2367
推荐指数
9
解决办法
52万
查看次数

常规演员与static_cast与dynamic_cast

我已经编写了近二十年的C和C++代码,但这些语言的一个方面我从未真正理解过.我显然使用常规演员表,即

MyClass *m = (MyClass *)ptr;
Run Code Online (Sandbox Code Playgroud)

到处都是,但似乎有两种其他类型的演员,我不知道其中的区别.以下代码行之间有什么区别?

MyClass *m = (MyClass *)ptr;
MyClass *m = static_cast<MyClass *>(ptr);
MyClass *m = dynamic_cast<MyClass *>(ptr);
Run Code Online (Sandbox Code Playgroud)

c++ pointers casting

1661
推荐指数
8
解决办法
67万
查看次数

在C++中键入转换/转换混淆

什么是类型转换?什么是类型转换

我什么时候应该使用它们?

细节:对不起,如果这是一个明显的问题; 我是C++的新手,来自红宝石背景,习惯于to_s等等to_i.

c++ casting type-conversion conversion-operator

12
推荐指数
1
解决办法
6320
查看次数

c++ 是否有等效的 boost::numeric_cast&lt;DestType&gt;(SourceType)?

我正在做一堆应用数学/信号处理/算法 C++ 代码。

我已启用-Wconversion编译器警告以捕获诸如类型double到类型数字的运行时转换之类的问题int32_t

显然,在这些转换过程中我总是很担心,因为:

  • 数字十进制值的丢失
  • 可能的正溢出或负溢出(“正溢出”是指 double 的值大于 INT32_MAX 并尝试将该值存储在目标类型中(int32_t在本例中))

每当我担心这种转换时,我通常使用单行检查:

boost::numeric_cast<DestType>(SourceType)
Run Code Online (Sandbox Code Playgroud)

但是,我想在没有boost.

直接的 C++ 有等价的boost::numeric_cast<DestType>(SourceType)吗?

如果直接的 C++ 没有等价物,那么什么是可比较的非boost实现?

我认为有点类似的检查基本上是一个模板函数,它有一个 if 语句来检查输入参数是否正溢出或负溢出(通过使用std::numeric_limits<DestType> ::max()and::min()和引发异常)。

c++ floating-point templates boost integer-overflow

8
推荐指数
1
解决办法
1524
查看次数