C++复习之路:2.C和C++的区别、C++的发展(C++11,14,17,20的新特性)包括强制类型转换和智能指针

新特性先挖坑

c和c++的区别:

  • c++面向对象,c是面向过程的结构化编程语言

  • c++面向对象包含的三大特性:封装、继承、多态

  • C++对比c增加了很多类型安全的功能,如强制类型转换:

其中包括四大强制类型转换

  1. const_cast: 用于将const常量转换为非const,使用const_cast<类名>实现;

例如:

可以直接使用    (类名)对象      ,也可以使用   const<类名>(对象)    实现转换;需要注意的是前者是c风格的转换,后者是c++风格的转换;个人觉得c风格的更易写,但是理论上没有C++的安全。而且在出错时并不易于查找,因为(类名)这样的字符串在程序中很多,而const_cast这种很少,易于查找。

 

2.static_cast:常用来进行不同的基本类型直接的转换,如char与int、int与float、enum与int之间;

上行转换:子类指针或引用转换成基类表示——安全

  下行转换:基类指针或引用转换成子类表示——危险(没有动态类型检查)

 

3.dynamic_cast:用于动态类型转换。(运行时检查

用于基类与子类之间的转换,当我们将dynamic_cast用于某种类型的指针或引用时,只有该类型至少含有虚函数时(最简单是基类析构函数为虚函数),才能进行这种转换。否则,编译器会报错。

4.reinterpret_cast :interpret是解释的意思,reinterpret即为重新解释,此标识符的意思即为数据的二进制形式重新解释,但是不改变其值。如:int i; char *ptr="hello freind!"; i=reinterpret_cast<int>(ptr);这个转换方式很少使用。

  • c++还多了泛化编程,模板类,函数模板啊,STL(标准模板库)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

溯夜流云

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值