所在的位置: C++ >> C++发展 >> 从C到C,不仅仅是Cwithclas

从C到C,不仅仅是Cwithclas

北京治白癜风医院哪家比较好 https://jbk.39.net/yiyuanzaixian/bjzkbdfyy/nvxbdf/

#Cpp#

C语言虽然是一个非常强大的语言,但是随着软件体积的增加,结构化的编程思想对于大型软件的开发越来越力不从心。随着面向对象编程的提出,有人便提出在C语言中使用面向对象的方法,如将函数指针和其他数据类型包裹在同一个结构体中,但是由于C语言本身没有被设计成面向对象的,实际实现起来会比较复杂,因此有人提出把C语言改造成更适合面向对象的语言,以迎合面向对象的设计方法,C++语言就是其中之一(同时期Objective-C也被发明出来)。

最开始的C++被称为Cwithclasses,也就是带类的C,这说明了C++早期设计出来的一个重要目的,就是支持面向对象。C++相比C语言,在面向对象编程上,支持直接声明类,支持声明和自动调用类的构造函数和析构函数,支持权限修饰符,支持类的继承派生等。这些C++新加入的特效相比C语言和其他面向对象语言的好处在于,能更加直观地表示面向对象的同时,不至于损失太多性能。C++另一个重大的变化在于stl,也就是标准库的加入,并提出了流的概念,使得部分io操作在形式上更加简单,不过也因为用输出流实现格式化输出过于繁琐和复杂,使得被不少人诟病。

比如在C语言中,输出float保留两位小数可以printf(%.2f,f);其中f是float型数据,而在C++中,使用标准输出流需要std::coutstd::fixedstd::setprecision(2)f;并且除了要包含iostream之外还要包含iomanip,如果有语句usingnamespacestd;就可以把std::去掉,不过可能会出现一些莫名其妙的命名冲突问题。

C++还加入了命名空间和函数重载以及模板,其中模板可以说是C++语法上最核心的部分。命名空间解决了C语言中容易发生命名冲突的问题,函数重载提高了程序可读性,而模板则大大提高代码的泛化能力,缺点是编译时间被拉得更长了。有网友吐槽,“我项目里改个变量几秒钟,结果重新编译看结果花了15分钟”,真可谓让人啼笑皆非。

除了上面提到的特性,C++还有一大堆C语言所没有的特性,比如引用,异常,new,delete运算符,运算符重载、友元等等,C++是一门相当复杂的语言,以至于精通C++已经成为了一个梗,没人敢说自己精通C++。就算真的精通了现版本的C++,马上C++又会更新,加入一堆特性,弄得人头大,比如有人认为C++11前后就是两种语言,那么C++11到底做了哪些重大改动,为什么说C++11之后就是另外一种语言了,我们将在文章给大家介绍。




转载请注明:http://www.aierlanlan.com/tzrz/8002.html

  • 上一篇文章:
  •   
  • 下一篇文章: 没有了