草庐IT

production_cast

全部标签

c++ - 为什么我需要 reinterpret_cast 将 Fred ** const 转换为 void ** const?

我有一个指向Fred的指针的const指针,但我不明白为什么static_cast是不够的。typedefstruct{intn;}Fred;Fred*pFred;Fred**constppFred=&pFred;void**constppVoid=static_cast(ppFred);请有人解释为什么需要reinterpret_cast将指向Fred*的指针转换为指向void*但的指针static_cast可以将指向Fred的指针转换为指向void的指针。 最佳答案 Fred*和void*不要求大小相同和代表性。(我在他们没有的

c++ - 为什么我需要 reinterpret_cast 将 Fred ** const 转换为 void ** const?

我有一个指向Fred的指针的const指针,但我不明白为什么static_cast是不够的。typedefstruct{intn;}Fred;Fred*pFred;Fred**constppFred=&pFred;void**constppVoid=static_cast(ppFred);请有人解释为什么需要reinterpret_cast将指向Fred*的指针转换为指向void*但的指针static_cast可以将指向Fred的指针转换为指向void的指针。 最佳答案 Fred*和void*不要求大小相同和代表性。(我在他们没有的

c++ - C/C++ : casting away volatile considered harmful?

(与此问题IsItSafetoCastAwayvolatile?相关,但不完全相同,因为该问题与特定实例有关)是否有过抛弃volatile被不视为危险做法的情况?(一个特别的例子:如果声明了一个函数voidfoo(long*pl);我必须实现voidbar(volatilelong*pl);由于我的部分实现需要bar()调用foo(pl),那么我似乎无法让它按原样工作,因为编译foo()和编译bar()的调用者不兼容。)作为推论,如果我有一个volatile变量v,并且我想用别人的函数voidfoo(long*pl),那个人告诉我它是安全的,我可以在调用之前直接转换指针,我的直觉是告诉

c++ - C/C++ : casting away volatile considered harmful?

(与此问题IsItSafetoCastAwayvolatile?相关,但不完全相同,因为该问题与特定实例有关)是否有过抛弃volatile被不视为危险做法的情况?(一个特别的例子:如果声明了一个函数voidfoo(long*pl);我必须实现voidbar(volatilelong*pl);由于我的部分实现需要bar()调用foo(pl),那么我似乎无法让它按原样工作,因为编译foo()和编译bar()的调用者不兼容。)作为推论,如果我有一个volatile变量v,并且我想用别人的函数voidfoo(long*pl),那个人告诉我它是安全的,我可以在调用之前直接转换指针,我的直觉是告诉

c++ - boost::lexical_cast 的替代方案

我正在参加一项挑战,为了切入主题,在我的程序中的一个地方,我需要将字符串转换为整数。我试过boost::lexical_cast但不幸的是它太慢了www。我想是因为它执行的所有检查。我需要的是无需任何检查即可执行此转换的东西(我知道会有有效数字存储为字符串)。顺便说一句,以天真的方式使用stringstream:stringstreaminterpreter;interpreter>number;甚至比boost::lexical_cast还要慢。atoi是唯一的选择吗? 最佳答案 您可以使用sscanf来做到这一点,但我怀疑它比a

c++ - boost::lexical_cast 的替代方案

我正在参加一项挑战,为了切入主题,在我的程序中的一个地方,我需要将字符串转换为整数。我试过boost::lexical_cast但不幸的是它太慢了www。我想是因为它执行的所有检查。我需要的是无需任何检查即可执行此转换的东西(我知道会有有效数字存储为字符串)。顺便说一句,以天真的方式使用stringstream:stringstreaminterpreter;interpreter>number;甚至比boost::lexical_cast还要慢。atoi是唯一的选择吗? 最佳答案 您可以使用sscanf来做到这一点,但我怀疑它比a

c++ - const_cast 未定义行为的重要示例

据我了解,以下代码是根据c++标准(特别是第7.1.5.1.4[dcl.type.cv]/4节)未定义的行为。#includestructF;F*g;structF{F():val(5){g=this;}intval;};constFf;intmain(){g->val=8;std::cout但是,我尝试过的每个编译器和优化设置都会打印“8”。问题:这种类型的“隐式const_cast”是否有会出现意外结果的示例?我希望有一些像结果一样壮观的东西#includeintmain(){for(inti=0;i开启,例如,带有-O2的gcc4.8.5EDIT:标准中的相关部分7.1.5.1.

c++ - const_cast 未定义行为的重要示例

据我了解,以下代码是根据c++标准(特别是第7.1.5.1.4[dcl.type.cv]/4节)未定义的行为。#includestructF;F*g;structF{F():val(5){g=this;}intval;};constFf;intmain(){g->val=8;std::cout但是,我尝试过的每个编译器和优化设置都会打印“8”。问题:这种类型的“隐式const_cast”是否有会出现意外结果的示例?我希望有一些像结果一样壮观的东西#includeintmain(){for(inti=0;i开启,例如,带有-O2的gcc4.8.5EDIT:标准中的相关部分7.1.5.1.

c++ - lexical_cast int 到字符串

忽略boost::lexical_cast的异常是否安全?将int转换为std::string时? 最佳答案 将int转换为std::string时词法转换引发的异常与转换无关,但与资源不可用有关。因此,您可以像忽略operatornew引发的异常bad_alloc一样忽略它。 关于c++-lexical_castint到字符串,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/27

c++ - lexical_cast int 到字符串

忽略boost::lexical_cast的异常是否安全?将int转换为std::string时? 最佳答案 将int转换为std::string时词法转换引发的异常与转换无关,但与资源不可用有关。因此,您可以像忽略operatornew引发的异常bad_alloc一样忽略它。 关于c++-lexical_castint到字符串,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/27