您的位置:首页 > 健康 > 美食 > 客服平台有哪些_网址提交大全_重庆网站快速排名提升_正规推广赚佣金的平台

客服平台有哪些_网址提交大全_重庆网站快速排名提升_正规推广赚佣金的平台

2025/2/25 18:52:17 来源:https://blog.csdn.net/qq_55958734/article/details/145825655  浏览:    关键词:客服平台有哪些_网址提交大全_重庆网站快速排名提升_正规推广赚佣金的平台
客服平台有哪些_网址提交大全_重庆网站快速排名提升_正规推广赚佣金的平台

目录

C语言中的类型转换

隐式类型转换

强制类型转换

C++中的类型转换 

static_cast

reinterpret_cast 

const_cast 

dynamic_cast


本期我们将学习C++中类型转换的相关知识点。

C语言中的类型转换

在C语言中,也有过类型转换的情景。

隐式类型转换

隐式类型转换其实也就是我们常说的相关类型的转换。

int main()
{int a = 10;double b = 20.1;b = a;return 0;	
}

a和b都是表示大小的相关变量,所以可以支持隐式类型转换。

强制类型转换

强制类型转换其实就是不相关类型的转换。

int main()
{int a = 10;int* p = &a;a =(int)p;return 0;	
}

a是变量,而p是变量的地址,所以两个变量是不相关的变量,就要进行强制类型转换。

C++中的类型转换 

C++中的类型转换与C语言中的类型转换是一样的吗,其实C++中的类型转换就是对C语言中的类型转换的引申与拓展。

C++中有四种类型转为,为static_cast,reinterpret_cast,const_cast,dynamic_cast

接下来,我们将详细的学习这四个类型。 

static_cast

static_cast是隐式类型转换,支持相关类型的转换。 

a和b是相关类型变量,所以支持隐式类型转换。 

reinterpret_cast 

 reinterpret_cast是强制类型转换,支持不相关类型的转换。

a和p是不相关类型,所以只能进行强制类型转换。 

const_cast 

const_cast支持const类型转换为非const类型,可以方便进行赋值。但是模板位置只能存放指针或者引用。

我们在创建a变量时使用了volatile关键字,目的是为了禁止编译器做出优化,导致输出的a值与实际的a值不相同的情况。 a是const int类型,本来是不可以进行改变的,但是最终通过const_cast的转换,最终进行了改变。

dynamic_cast

dynamic支持继承中,父类对象父类对象的地址传递给子类对象子类对象的指针子类对象的引用,也就是向下兼容。

class A
{virtual void func(){}
private:int _a;
};class B :public A
{
private:int _b;
};int main()
{//1.子类对象的指针可以传给父类对象的指针,向上兼容规则,天然支持A* a1=nullptr;B b1;a1 = &b1;//2.父类对象的指针可以传给子类对象的指针,使用dynamic_cast实现向下兼容A a2;B* b2 = nullptr;b2 = dynamic_cast<B*>(&a2);return 0;
}

再学习继承时,我们知道子类的对象和子类对象的地址是可以传递给父类的对象,父类对象的指针和父类对象的引用的,这是编译器天然支持的行为,但是相反父类是不能够传递给子类的,于是就有了dynamic_cast的类型转换,实现了向下兼容,但是前提是在父类中必须实现虚函数。

引用了dynamic_cast之后,虽然支持了父类向子类的向下兼容,但是实际上这种转换是没有什么太大的意义的,因为转换之后,子类的指针和引用或者单纯的子类对象都是是一个空值,进行不了任何的访问。 所以dynamic_cast一般情况下就适用于,继承中的子类对象向父类对象的转换。

为什么要引入四种类型转换?

  •  期望C++程序员不要使用C语言中的隐式和强制类型转换,这样可以防止在项目中被类型转换而导致项目中一些不易被排查出来的bug的产生。

以上便是C++中类型转换的所有内容。

本期内容到此结束,至此,C++的所有内容已经更新完毕^_^ 

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com