casting相关内容

从基类到不同派生类的多重继承转换

假设有这样的类层次结构: class A//基类B类//接口C类:公共A,公共B 然后创建C对象: A *object = new C(); 是否可以将对象强制转换为 B ? 重要提示:我假设我不知道对象是 C.我只知道它实现了接口 B 解决方案 否.这是不可能的(从 A* 直接转换到 B*). 因为A和B的地址在class C的不同位置.所以演员表总是不安全的,你可能 ..
发布时间:2021-12-31 22:04:44 C/C++开发

为什么我可以在 C 中将 int 文字隐式转换为 int * 而在 C++ 中不能?

我相信在下面的代码中,C“自动将 17 转换为 int *",正如最近有人指出的(但没有给出原因),这是错误的. int *ptoi = 17;//我假设 17 被自动转换为 int * 我知道如果我在 C++ 中做与上面相同的事情,我会收到一个错误消息,说 invalid conversion from int to int *.但是,如果我在 C++ 中执行以下操作,则效果很好: int ..
发布时间:2021-12-31 22:04:34 C/C++开发

是否可以将整数转换为枚举?

我得到了以下枚举: 公共枚举 detallistaDocumentStatus {///原来的,///复制,///重新广场,///删除,} 然后我得到了一个 detallistaDocumentStatus 类型的类属性: public detallistaDocumentStatus documentStatus {得到 {返回 this.documentStatusField;}放 ..
发布时间:2021-12-31 22:04:26 C#/.NET

C# 投射列表作为列表

为什么我不能将 List 转换为 List?为什么以下不起作用: 内部类ObjBase{}内部类 Obj : ObjBase{}内部类 ObjManager{内部列表返回东西(){将 getSomeStuff() 作为 List 返回;}私人列表获取一些东西(){返回新列表();}} 相反,我必须这样做: 内部类ObjBase{}内部类 Obj : ObjBase{}内部类 ObjManag ..
发布时间:2021-12-31 22:04:19 C#/.NET

投射一个对象有多昂贵?

可能的重复: TypeCasting 的性能 将一个对象转换为另一个对象的代价有多大? CustomClass instance = GenericObject as CustomClass 是否应该避免所有成本? 想看看其他人是怎么想的.我确定这是非常特殊的情况. 解决方案 您应该避免担心特定语言功能对性能的影响,除非您有具体的证据(测量)表明它们确实导致了问题. e ..
发布时间:2021-12-31 22:04:03 C#/.NET

在 Java 中将字符转换为整数

系统:Windows Vista 32 位,Java 6.0.2 我有几个关于将字符转换为整数的问题.我运行下面的代码,将 myInt 的值为 4: char myChar = '4';int myInt = myChar - '0'; 现在,这种转换是 Java 自动完成的吗?是从 ascii '4' 中减去 '0' 的 ascii 值,然后在幕后转换为 int 吗?这让我很困惑,因 ..
发布时间:2021-12-31 22:03:53 Java开发

将双变量转换为十进制

如何将double 转换为decimal 用于货币开发.M 去哪儿了? decimal dtot = (decimal)(doubleTotal); 解决方案 你只将 M 用于数字文字,当你转换它时: decimal dtot = (decimal)doubleTotal; 请注意,浮点数不适合保持精确值,因此如果您先将数字相加,然后转换为 Decimal,则可能会出现舍入错误.您可能希 ..
发布时间:2021-12-31 22:03:37 C#/.NET

转换为 void* 并返回 Original_Data_Type*

我多次看到并使用了C++,特别是在各种线程实现中.我想知道这样做是否有任何陷阱/问题?当我们强制转换为 void* 并再次返回时,有什么方法可能会遇到错误或未定义的条件吗?如果有这些问题,我们应该如何解决? 谢谢. 解决方案 我想知道这样做是否有任何陷阱/问题? 在将 void* 转换回特定类型时,您需要绝对确定,否则,您最终会遇到 未定义行为 和潜在的灾难.一旦你使用vo ..
发布时间:2021-12-31 22:03:28 C/C++开发

什么是动态转换的“好用"示例?

我们经常听到/读到应该避免动态转换.我想知道根据你的说法,什么是它的“好用"示例? 编辑: 是的,我知道其他线程:它是确实在阅读我提出问题的第一个答案时! 解决方案 这个最近的主题给出了一个它可以派上用场的例子.有一个基本的 Shape 类和从它派生的类 Circle 和 Rectangle .在测试相等性时,很明显圆形不能等于矩形,尝试比较它们将是一场灾难.在遍历指向 Sha ..
发布时间:2021-12-31 22:03:20 C/C++开发

用于类比较的 C++ dynamic_cast 与 typeid

可能的重复: C++ 等效的 instanceof 我想知道 dynamic_cast 和 typeid 之间的区别仅在于类比较(除了 dynamic_cast 允许访问子类的方法和 typeid 仅用于类比较).我发现一个两年前的 StackOverflow 也在问同样的问题:C++ 等效的 instanceof.然而,它已经两年了,我不想死掉一个旧帖子(我不确定 typeid 什么时候 ..
发布时间:2021-12-31 22:03:10 C/C++开发

为什么将指针转换为 bool 时会出现性能警告?

扩展. 当我做这样的事情时,我觉得我很酷: bool hasParent(){返回 this->parentNode ;} 即使使用(bool)强制转换,警告仍然不会消失. 当没有父节点时,this->parentNode 为 NULL. 但我得到: 警告 C4800:“节点 *":强制将值设为布尔值“真"或“假"(性能警告) 怎么了,哟?为什么这是一个性能警告? ..
发布时间:2021-12-31 22:02:55 C/C++开发

将 int 指针转换为 char ptr,反之亦然

问题很简单.据我了解,GCC 认为在 32 位环境中,字符将按字节对齐,整数按 4 字节对齐.我也知道 C99 标准 6.3.2.3 说在未对齐的指针类型之间进行转换会导致未定义的操作.C 的其他标准对此有何看法?这里还有许多经验丰富的编码员 - 对此的任何看法将不胜感激. int *iptr1, *iptr2;字符 *cptr1, *cptr2;iptr1 = (int *)cptr1;cpt ..
发布时间:2021-12-31 22:02:39 其他开发

Action<对象,EventArgs>无法转换为 EventHandler?

我正在连接一个事件以使用需要在触发后自行删除的 lambda.我无法通过将 lambda 内联到 += 事件(没有可用于删除事件的可访问变量)来做到这一点,所以我设置了一个 Action 变量并将 lambda 移到那里.主要错误是它无法将 Action 转换为 EventHandler.我认为 lambda 表达式可以隐式转换为事件处理程序,为什么这不起作用? 解决方案 Lambda 可 ..
发布时间:2021-12-31 22:02:17 C#/.NET

警告:赋值从指针生成整数而不进行强制转换

当我将 char * 声明为固定字符串并重用指针指向另一个字符串时 /* 初始声明 */char *src = "abcdefghijklmnop";...../* 我收到“警告:赋值从指针生成整数而不进行强制转换" */*src="另一个字符串"; 我尝试重铸指针,但没有成功. 解决方案 写语句时 *src = "anotherstring"; 编译器将常量字符串 "abcdef ..
发布时间:2021-12-31 22:01:49 其他开发

unique_ptr 的动态转换

和 Boost 一样,C++11 提供了一些用于转换 shared_ptr 的函数: std::static_pointer_caststd::dynamic_pointer_caststd::const_pointer_cast 然而,我想知道为什么 unique_ptr 没有等效函数. 考虑以下简单示例: class A { virtual ~A();... }B 类:公共 A { ..
发布时间:2021-12-31 22:01:41 C/C++开发

在 C/C++ 中进行数学运算时应该对哪些变量进行类型转换?

例如,当我将两个整数相除并希望返回一个浮点数时,我迷信地这样写: int a = 2, b = 3;浮动c =(浮动)a/(浮动)b; 如果我不将 a 和 b 转换为浮点数,它将进行整数除法并返回一个 int. 同样,如果我想将一个有符号的 8 位数字与一个无符号的 8 位数字相乘,我会在相乘之前将它们强制转换为有符号的 16 位数字,以免溢出: u8 a = 255;s8 b = - ..
发布时间:2021-12-31 22:01:31 C/C++开发