Alo*_*ave 6 c++ casting operator-overloading
在reinterpret_cast我们知道可以将任何指针类型到另一个任何指针类型.关于这个演员运算符我想问的问题是:
reinterpret_cast工作,允许reinterpret_cast工作的魔力(内部实现)是什么?reinterpret_cast?据我所知,它不保证安全铸造,所以在使用时要采取什么预防措施reinterpret_cast? 另外一个关于普通铸造运营问题:
铸造运营商(static_cast,dynamic_cast,const_cast,reinterpret_cast),都称为Operators即是最好的我的理解,因此,它是正确的说法,以使该casting operators cannot be overloaded unlike most other operators(我知道不是所有的运算符可以重载,我知道其中不可能(除了问我,请不要惹恼我)我怀疑这是因为他们是运营商,标准对这些有什么看法?
reinterpret_cast通常只是意味着(至少尝试)将您在该地址找到的内容视为我指定的类型。该标准对其功能的定义很少,因此它可能与此有所不同,但它很少(如果有的话)确实如此。reinterpret_castto IPHdr(TCPHdr或您碰巧使用过的任何名称)。不过,编译器不会(通常)做太多事情——任何安全性都取决于您来实现和强制执行。对于你的最后一个问题:你可以重载一个类的转换:
class XXX {
public:
operator YYY() { return whatever; }
};
Run Code Online (Sandbox Code Playgroud)
不过,这通常可用于一般转换——无论是通过 static_cast、C 风格转换还是隐式转换来完成。C++0x 允许您添加explicit限定符,因此它不会用于隐式转换,但仍然无法区分 static_cast 和 C 风格的强制转换。
| 归档时间: |
|
| 查看次数: |
660 次 |
| 最近记录: |