草庐IT

reinterpret

全部标签

c++ - `reinterpret_cast` a `T*` 到 `T(*)[N]` 是未定义的行为吗?

考虑以下场景:std::arraya;autop=reinterpret_cast(a.data());(*p)[0]=42;这是未定义的行为吗?我认为是。a.data()返回一个int*,与int(*)[8]不一样typealiasingrules关于cppreference似乎表明reinterpret_cast无效作为程序员,我知道a.data()指向的内存位置是8int的数组对象我是否缺少任何规则使此reinterpret_cast有效? 最佳答案 一个数组对象和它的第一个元素不是指针可互转换的*,所以reinterpret

c++ - `reinterpret_cast` a `T*` 到 `T(*)[N]` 是未定义的行为吗?

考虑以下场景:std::arraya;autop=reinterpret_cast(a.data());(*p)[0]=42;这是未定义的行为吗?我认为是。a.data()返回一个int*,与int(*)[8]不一样typealiasingrules关于cppreference似乎表明reinterpret_cast无效作为程序员,我知道a.data()指向的内存位置是8int的数组对象我是否缺少任何规则使此reinterpret_cast有效? 最佳答案 一个数组对象和它的第一个元素不是指针可互转换的*,所以reinterpret

c++ - Qt:槽返回值的含义?

根据文档,插槽的返回值没有任何意义。然而,在生成的moc代码中,我看到如果一个插槽返回一个值,则该值用于某事。知道它有什么作用吗?这是我所说的一个例子。这取自moc生成的代码。'message'是一个不返回任何内容的插槽,'selectPart'被声明为返回int。case7:message((*reinterpret_cast(_a[1])),(*reinterpret_cast(_a[2])));break;case8:{int_r=selectPart((*reinterpret_cast(_a[1])),(*reinterpret_cast(_a[2])));if(_a[0])

c++ - Qt:槽返回值的含义?

根据文档,插槽的返回值没有任何意义。然而,在生成的moc代码中,我看到如果一个插槽返回一个值,则该值用于某事。知道它有什么作用吗?这是我所说的一个例子。这取自moc生成的代码。'message'是一个不返回任何内容的插槽,'selectPart'被声明为返回int。case7:message((*reinterpret_cast(_a[1])),(*reinterpret_cast(_a[2])));break;case8:{int_r=selectPart((*reinterpret_cast(_a[1])),(*reinterpret_cast(_a[2])));if(_a[0])

c++ - reinterpret_cast 抛弃限定词

我添加了一个关于重新解释变量的问题,但我不知道为什么..intProgressBar(constuint64_tdata_sent,constuint64_tdata_total,voidconst*constdata){Dialog*dialog=reinterpret_cast(data);dialog->setValue((data_sent*100)/data_total);}reinterpret_cast好像不允许说reinterpret_castfrom'constvoid*)toDialog*castsawayqualifiers任何想法 最

c++ - reinterpret_cast 抛弃限定词

我添加了一个关于重新解释变量的问题,但我不知道为什么..intProgressBar(constuint64_tdata_sent,constuint64_tdata_total,voidconst*constdata){Dialog*dialog=reinterpret_cast(data);dialog->setValue((data_sent*100)/data_total);}reinterpret_cast好像不允许说reinterpret_castfrom'constvoid*)toDialog*castsawayqualifiers任何想法 最

c++ - Reinterpret_cast 与 C 风格的类型转换

我听说reinterpret_cast是实现定义的,但我不知道这真正意味着什么。你能提供一个例子说明它是如何出错的,它出错了,使用C-Stylecast更好吗? 最佳答案 C风格的类型转换并不好。它只是按顺序尝试各种C++风格的强制转换,直到找到一个可行的。这意味着当它像reinterpret_cast一样工作时,它与reinterpret_cast有完全相同的问题。但除此之外,它还有这些问题:它可以做很多不同的事情,并且从阅读代码中并不总是清楚将调用哪种类型的转换(它的行为可能类似于reinterpret_cast、const_c

c++ - Reinterpret_cast 与 C 风格的类型转换

我听说reinterpret_cast是实现定义的,但我不知道这真正意味着什么。你能提供一个例子说明它是如何出错的,它出错了,使用C-Stylecast更好吗? 最佳答案 C风格的类型转换并不好。它只是按顺序尝试各种C++风格的强制转换,直到找到一个可行的。这意味着当它像reinterpret_cast一样工作时,它与reinterpret_cast有完全相同的问题。但除此之外,它还有这些问题:它可以做很多不同的事情,并且从阅读代码中并不总是清楚将调用哪种类型的转换(它的行为可能类似于reinterpret_cast、const_c

c++ - 为什么 reinterpret_cast 不能将 int 转换为 int?

我的编译器是最新的VC++2013RC。voidf(){intn1=0;intn2=reinterpret_cast(n1);//errorC2440}errorC2440:'reinterpret_cast':cannotconvertfrom'int'to'int'为什么reinterpret_cast不能用在这么明显的情况下? 最佳答案 According对于cppreference.com,以下转换仅在C++11之后可用:Anexpressionofintegral,enumeration,pointer,orpointer

c++ - 为什么 reinterpret_cast 不能将 int 转换为 int?

我的编译器是最新的VC++2013RC。voidf(){intn1=0;intn2=reinterpret_cast(n1);//errorC2440}errorC2440:'reinterpret_cast':cannotconvertfrom'int'to'int'为什么reinterpret_cast不能用在这么明显的情况下? 最佳答案 According对于cppreference.com,以下转换仅在C++11之后可用:Anexpressionofintegral,enumeration,pointer,orpointer