C++中四种类型转换以及const

您所在的位置:网站首页 const的对象可以改变属性的值 C++中四种类型转换以及const

C++中四种类型转换以及const

2024-07-10 11:25| 来源: 网络整理| 查看: 265

we have four specific casting operators:dynamic_cast, reinterpret_cast, static_cast and const_cast. Their format is to follow the new type enclosed between angle-brackets () and immediately after, the expression to be converted between parentheses.

dynamic_cast (expression) reinterpret_cast (expression) static_cast (expression) const_cast (expression)

一、对C++中四种类型转换总结如下: const_cast(expr) 用来移除对象的常量性(cast away the constness) const_cast一般用于指针或者引用 使用const_cast去除const限定的目的不是为了修改它的内容 使用const_cast去除const限定,通常是为了函数能够接受这个实际参数

static_cast(expr) 编译器隐式执行的任何类型转换都可以由static_cast完成 当一个较大的算术类型赋值给较小的类型时,可以用static_cast进行强制转换。

可以将void*指针转换为某一类型的指针

可以将基类指针强制转换为派生类指针,但是不安全。 无法将const转化为nonconst,这个只有const_cast才可以办得到

reinterpret_cast(expr) “通常为操作数的位模式提供较低层的重新解释”也就是说将数据以二进制存在形式的重新解释。 int i; char *p = "This is a example."; i = reinterpret_cast(p); //此时结果,i与p的值是完全相同的。

int *ip char *pc = reinterpret_cast(ip); // 程序员需要记得pc所指向的真实对象是int型,并非字符串。 // 如果将pc当作字符指针进行操作,可能会造成运行时错误 // 如int len = strlen(pc); 多重继承时reinterpret_cast不安全。static_cast会根据父子类指针转换的偏移量转换到正确地址,而reinterpret_cast不会。

 C++ Code  1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32   #include  #include  using namespace std;

class A { public:     int m_a; };

class B { public:     int m_B; };

class C: public A, public B {

};

int main(void) {

    C c;     cout 



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3