casting相关内容

C ++函数式转换的目的究竟是什么或是什么?

我在说“type(value)” - 风格的cast。我读过的书很快地传递过来,只是说它们在语义上等同于C风格的cast,“(type)value”,并且应该避免它们。如果他们的意思是一个老式的演员做同样的事情,为什么他们被添加到语言?另外,因为声明可以包含多余的括号,这段代码:“T x(T(y));不做有意使用函数式cast的人会期望;它声明一个名为x的函数接受T并返回一个T,而不是通过将y转换 ..
发布时间:2016-10-13 10:34:17 C/C++开发

我可以将一个派生类转换为私有基类,使用C风格的转换吗?

我可以这样做吗? class A {...} class B:private A { const A& foo()const { return *((const A *)this); } }; 我可以从子类继承一个子类,并将其转换为它的公共版本基类?我可以在没有虚拟方法的情况下这样做吗? 我的猜测是肯定的,但我想确保它是安全的/可移植的。 ..
发布时间:2016-10-13 10:00:37 C/C++开发

使用dynamic_cast与引用和指针时的行为差异

我正在检查dynamic_cast的行为,发现当它失败时,std :: bad_cast异常只会在目标是引用类型时抛出。如果目标是一个指针类型,那么抛出的异常不会抛出。这是我的示例代码: class A { public: virtual〜A () { } }; B类:public A { }; int main() { A * p = new A; ..
发布时间:2016-10-13 09:50:19 C/C++开发

在C ++中的函数指针

我有一个由dlsym()返回的void指针,我想调用void指针指向的函数。 所以我通过转换类型转换: void * gptr = dlsym(some symbol .. typedef void(* fptr)(); fptr my_fptr = static_cast(gptr); 我也尝试过reinterpret_cast但没有运气,虽然C类 ..
发布时间:2016-10-11 22:35:17 C/C++开发

错误:从“void *”转换为“int”失去精度

我有一个原型 void * myFcn(void * arg)的函数,它用作pthread的起始点。我需要将参数转换为一个int供以后使用: int x =(int)arg; 编译器(GCC版本4.2.4)返回错误: file.cpp:233:error:从'void *'转换为'int'失去精度 解决方案 可以将其转换为 intptr_t 类型 ..
发布时间:2016-10-11 22:29:53 C/C++开发

(类型)值和类型(值)之间的区别是什么?

之间有什么区别 (type)value 和 type(value) 在C ++中? 解决方案 没有区别;按照标准(§5.2.3): 简单类型说明符(7.1.5)后跟括号表达式列表构造一个值给定表达式列表的指定类型。如果表达式列表是单个表达式,则类型转换表达式与相应的强制转换表达式(5.4)是等效的(在定义中,如果定义的话)。 ..
发布时间:2016-10-11 21:24:48 C/C++开发

static_cast<>和C风格铸造?

有什么理由比C风格的转换更喜欢 static_cast 吗?它们是等效的吗?是他们的任何种类的速度差异? 解决方案 C ++样式转换由编译器检查。 C风格的cast不会,并且可以在运行时失败 也可以很容易地搜索c ++风格的cast,而很难搜索c风格的casts 另一个大的好处是4个不同的C ++风格的转换更清楚地表达了程序员的意图。 编写C ++时,几乎总是使用C语 ..
发布时间:2016-10-11 20:45:13 C/C++开发

C ++转换语法样式

与正式投放vs. static_cast与dynamic_cast 相关的问题: C ++中使用什么样的语法风格? C风格的转换语法:(int)foo C ++风格的转换语法: static_cast(foo) 构造函数语法: int(foo) $ b b 他们不能翻译成完全相同的指令(是吗?),但它们的效果应该是一样的(对吧?)。 在内置的数字类型之间转 ..
发布时间:2016-10-11 20:36:15 C/C++开发

删除void指针是否安全?

假设我有以下代码: void * my_alloc(size_t size) { return new char [size]; } void my_free(void * ptr) { delete [] ptr; } 这样安全吗?或者必须在删除之前将 ptr 转换为 char * ? 解决方案 这取决于“安全”。它通常工作,因为信息与分配本 ..
发布时间:2016-10-11 20:33:44 C/C++开发

是const_cast安全吗?

我找不到很多关于const_cast的信息。我可以找到(在堆栈溢出)的唯一信息是: const_cast ()用于添加/删除const )(或波动性)。 这让我很紧张。可以使用const_cast引起意外的行为? 解决方案 或者,什么时候可以使用const_cast? div > const_cast 是安全的,只有当你转换一个最初非 - const 的变量。例如,如果你有 ..
发布时间:2016-10-11 20:11:08 C/C++开发

什么时候使用reinterpret_cast?

我对 reinterpret_cast vs static_cast 的适用性感到困惑。从我已经阅读的一般规则是使用静态转型,当类型可以在编译时解释,因此单词 static 。这是C ++编译器在内部用于隐式转换的转换。 reinterpret_cast 适用于两种情况,将整数类型转换为指针类型,反之亦然,或将一种指针类型转换为另一种类型。我得到的一般想法是这是不便宜,应该避免。 我有点困 ..
发布时间:2016-10-11 20:10:15 C/C++开发

C ++运算符中的隐式类型转换规则

我想要更好地知道我什么时候应该投降。例如, int + float =?在C ++中的隐式类型转换规则是什么? int * float =? float * int =? int / float =? float / int =? int / int =? int ^ float =? et cetera ... 表达式总是被评估为更 ..
发布时间:2016-10-11 20:03:06 C/C++开发

在C ++中,为什么使用static_cast< int>(x)而不是(int)x?

我听说过,在C ++中, static_cast 函数应该优先于C风格或简单的函数式转换。这是真的?为什么? 解决方案 主要原因是经典C类型不区分我们所谓的 static_cast(), reinterpret_cast(), const_cast()和 dynamic_cast()。这四种情况完全不同。 A static_cast()通常是安全的。在语言中有一 ..
发布时间:2016-10-11 19:59:47 C/C++开发