|
|
1
22
简而言之,因为多重继承。 在长:
输出:
请注意,为了正确地转换为b*,static_cast必须更改指针值。如果编译器没有C的类定义,那么它就不知道B是一个基类,当然也不知道要应用什么偏移量。 但是,在没有可见定义的情况下,静态\u cast的行为与重新解释\u cast不同,这是禁止的:
普通的C型铸造,
静态类型转换总是知道如何处理内置类型,这就是内置的真正含义。它可以将int转换为float,依此类推。所以这就是为什么它对数值类型总是安全的,但是它不能转换指针,除非(a)它知道指针指向什么,(b)指向类型之间有正确的关系。因此它可以转换
正如安德烈所说,有一种方法你可以使用
其中一件事
你也可以用同样的方法做不安全的事情
|
|
|
2
5
不,你的“afaik”不正确。
首先,什么时候
举例说明以上内容:
仅当以下代码可编译时才可编译
为了编译这两种类型的定义,必须是可见的。
也,
仅当以下代码可编译时才可编译
同样,为了编译这两种类型的定义,必须是可见的。
所以,你根本无法使用
其次,什么时候
|
|
|
DutChen18 · 如何在C宏中内联触发隐式指针转换? 1 年前 |
|
|
0xDED · 如何将泛型类强制转换为对象的泛型类? 2 年前 |
|
|
Niclas · 变量>-1如何在C中精确求值? 2 年前 |
|
|
Textime · 将Varchar2转换为时间 2 年前 |
|
|
xpt · Go,无法将类型*int32转换为类型*int64 2 年前 |