相关疑难解决方法(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 <int>(x)而不是(int)x?

我听说该static_cast函数应该优先于C风格或简单的函数式转换.这是真的?为什么?

c++ casting

628
推荐指数
9
解决办法
33万
查看次数

static_cast <>和C样式转换有什么区别?

有什么理由喜欢static_cast<>超过C风格的演员吗?它们是等价的吗?他们有什么速度差异吗?

c++ casting static-cast

188
推荐指数
7
解决办法
8万
查看次数

为什么要避免铸造?

我通常会尽量避免使用类型,因为我的印象是它的编码习惯很差并且可能会导致性能下降.

但如果有人让我解释为什么会这样,我可能会把它们看成是车头灯中的鹿.

那么为什么/什么时候铸造不好?

它是一般的java,c#,c ++还是每个不同的运行时环境都按照它自己的条件处理它?

任何语言的细节都是受欢迎的,例如为什么它在c ++中不好?

c# c++ java casting

94
推荐指数
6
解决办法
2万
查看次数

对于非指针类型,使用static_cast而不是C样式转换是否有任何优势?

我很清楚使用static_cast而不是C样式转换为指针类型的优势.

如果指针类型不兼容,则:

  • static_cast 将在源代码中的特定行产生编译时错误
  • C风格的转换可能会在程序执行中的"随机"点导致运行时错误

但我无法找到非指针类型的任何类似示例.

换句话说,两种转换方法对非指针类型产生相同的结果.

这是正确的,还是我错过了什么?

如果是,仅static_cast用于非指针类型以保持编码一致性?

c++ casting compile-time

33
推荐指数
4
解决办法
3063
查看次数

如何知道类枚举的基础类型?

我有一个变量声明为:

enum class FooEnum: uint64_t {}
Run Code Online (Sandbox Code Playgroud)

我想转换为它的基类型,但我不想硬编码基类型.例如,像这样:

FooEnum myEnum;
uint64_t * intPointer = (underlying_typeof(myEnum))&myEnum;
Run Code Online (Sandbox Code Playgroud)

这可能吗?

c++ c++11

29
推荐指数
3
解决办法
9377
查看次数

C++ int float casting

为什么m总是= 0?someClass的x和y成员是整数.

float getSlope(someClass a, someClass b)
{           
    float m = (a.y - b.y) / (a.x - b.x);
    cout << " m = " << m << "\n";
    return m;
}
Run Code Online (Sandbox Code Playgroud)

c++ floating-point casting

26
推荐指数
3
解决办法
15万
查看次数

什么是动态铸造的"好用"例子?

我们经常听到/读到应该避免动态铸造.根据你的说法,我想知道它的"好用"例子是什么?

编辑:

是的,我知道那个其他线程:确实在阅读那里的第一个答案时,我问了我的问题!

c++ dynamic-cast casting rtti

23
推荐指数
2
解决办法
3万
查看次数

警告C4244:'参数':从'time_t'转换为'unsigned int',可能丢失数据 - C++

我做了一个简单的程序,允许用户选择一些骰子然后猜测结果...我之前发布了这个代码,但是错误的问题所以它被删除了...现在我不能有任何错误甚至警告代码,但由于某种原因,这个警告保持弹出,我不知道如何解决它... "警告C4244:'参数':从'time_t'转换为'unsigned int',可能丢失数据"

#include <iostream>
#include <string>
#include <cstdlib>
#include <time.h>

using namespace std;

int  choice, dice, random;

int main(){
    string decision;
    srand ( time(NULL) );
    while(decision != "no" || decision != "No")
    {
        std::cout << "how many dice would you like to use? ";
        std::cin >> dice;
        std::cout << "guess what number was thrown: ";
        std::cin >> choice;
         for(int i=0; i<dice;i++){
            random = rand() % 6 + 1;
         }
        if( choice == random){
            std::cout << "Congratulations, you got it …
Run Code Online (Sandbox Code Playgroud)

c++

23
推荐指数
2
解决办法
5万
查看次数

静态投射与动态投射

可能重复:
常规强制转换与static_cast对比dynamic_cast

我不太习惯何时使用静态演员和动态.有什么解释吗?

c++

22
推荐指数
2
解决办法
4万
查看次数