新特性先挖坑
c和c++的区别:
-
c++面向对象,c是面向过程的结构化编程语言
-
c++面向对象包含的三大特性:封装、继承、多态
-
C++对比c增加了很多类型安全的功能,如强制类型转换:
其中包括四大强制类型转换
- 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(标准模板库)