|
|
1
4
最后一个问题是:你可以为一个类重载casting:
不过,这通常可以用于转换——无论是通过静态转换、C样式转换,还是隐式转换。C++ 0x允许你添加一个
|
|
2
2
首先,不清楚“非标准指针”是什么意思。我认为你的前提是有缺陷的。幸运的是,这似乎没有影响到问题。
“它是怎么工作的?”好吧,正如你从名字中可以猜到的,其目的只是改变对位模式的解释,可能是适当的扩展或缩短。这是一种类型更改,其中位模式保持不变,但解释和概念值发生更改。它与保持概念值的类型变化(例如。
“如何确保安全”,即了解编译器的工作,以及
干杯。, |
|
3
2
例如
不管发生什么情况,我都很乐意让你这么做。有时候,如果你在做一些低级的操作,这可能就是你想要做的。(想象一下
潜在的陷阱是巨大的,即使是在最简单的情况下,如缓冲区,其中对齐可能是一个问题。
与
|
|
|
4
1
是的,他们是接线员。恐怕你不能凌驾于他们之上。 |
|
|
5
1
一个“实际”的使用重新解释。
这个类在应用程序中的一千个地方使用,没有问题。 现在,因为某些原因,我想在一个特定的部分看到成员。但是,我不想触碰现有的类,所以打破规则如下。
当您想看到ClassWithHiddenVariables对象的成员时,请使用reinterpret_cast来强制转换以公开OtherClass。示例如下
我不认为这种情况发生在现实世界中。但这只是解释了将对象视为位模式的reinterpret_cast。 |
|
|
6
0
您的类可以有任何类型T*的转换运算符,并且这些转换将在某些条件下隐式调用,或者您可以使用
|
|
|
7
0
|
|
|
8
-1
reinterpret_cast相当于C风格的cast。它并不能保证什么;它是为了让你做你需要做的事,希望你知道你在做什么。 如果你想确保安全,可以使用dynamic_cast,因为它就是这样做的。如果无法安全地完成强制转换,DyrimeCySCAST返回NULL或NulLPTR(C++0X)。 使用“铸造操作器”铸造,如静态铸造、动态铸造等。。不能超载。直接转换可以,例如:
|
|
|
9
-1
差不多,但不完全是。例如,不能使用reinterpret_cast来转换
根本没有魔法。最终,所有数据都只是字节。C++类型的系统仅仅是一个抽象层,它告诉编译器如何“解释”每个字节。一个
好,
|
|
|
Noah Wilder · Swift中元组的操作符重载 8 年前 |
|
|
Salman · 指向具有数组索引运算符重载的类的指针 8 年前 |
|
|
Nom OnTheCookie · 使用向量重载C++输出 8 年前 |
|
|
J. Doe · C++重载:从友元函数切换到成员函数 8 年前 |
|
|
Ana · 使用操作符重载添加存储在vector中的类对象 8 年前 |
|
|
Matthew · 重载运算符|用于固定大小的阵列? 8 年前 |
|
|
Martin Žid · 重载运算符+=具有两个类 8 年前 |