一、C与C++

  一般来说,计算机要处理两个概念--算法和数据。C在面世时是过程性的语言,过程性的语言指的是程序的过程较比其他语言,会更加的有序可读(清晰性和可读性)。因为它把程序分解成各个分支,并执行相对应的功能。这就是结构化的编程,所以这意味着它强调编程的算法问题。当遇到大规模的数据处理或大规模的编程时,C语言就会有些不足。因此,C++产生了。C++的名字来由就是C的自增(++),所以他是C的扩展版本。他主要面向的是对数据的处理。C++的语法会比较复杂,但如果理解了他的编程思想,使用还是比较方便的。

二、C++的基本概念(注意:c++出错时,可能一处错误就会有大量的提示)

  1、上面说到C++是C的扩展版本,所以大部分的C语句在C++中都可以使用。比如C的头文件<stdio.h>,printf等等

  2、引用C++标准库中的头文件是不能加.h,要不然会出现错误提示。自己定义的头文件和C标准的头文件是需要添加.h

  3、C++引入输入/输出流的方式,因此当变量的类型定义完,不需要判定变量的类型,就可以直接输入数据

    

三、C++的数据类型

  C++的数据类型基本与C一致;不过有几个需要注意的点

  1、bool类型在C中是属于int类型的,因此占4个字节。而在C++中,他是真正意义的bool类型,是独立于int类型的,它只占一个字节。

  2、在C语言中void* 与其他任意类型都是可以互相转换的。但在C++中,其他类型转换成void*是允许的,但是void*转换成其他类型是不允许的,如果一定要转换,必须牵制进行转换。

  3、C++中几乎没有关键字typedef。C++中结构,联合,枚举一但申明,就不需要关键字。例如 struct student{};此时就可以直接使用student进行定义。

  4、枚举中一旦申明,在定义赋值时,是不能使用除了次类型枚举中定义的数据之外的值的。

  5、结构中添加了访问属性(这里主要讲两个,还有一个:protectd)

      a、public :共有的,被他修饰过的成员,任意位置都可以访问

      b、private :私有的,被他修饰的成语,只能在成员函数中访问

  6、结构中有两个可自动调用的函数--构造函数和析构函数,分别在结构体的创建和释放分别调用。

四、引用与指针

  1、应用必须初始化,否则会编译出错。例如,int& num = 29;

  2、引用只能是一次性的,不能更改。因此使用const来引用也是可以的。

  3、引用的作用与指针类似,a、函数之间的共享变量    b、提高参数的传递效率(比指针高) c、可以获取参数

       引用的功能比指针强大,但指针对堆内存的申请是应用所不备的 

五、C++的内存管理

  1、C++中new/delete和C的malloc/free的功能类似,不过由于new/delete是封装了malloc/free函数的,因此new/delete的功能更加强大。

  2、new/delete申请调用结构体时,会自动调用构造函数和析构函数,而malloc/free则不会。

  3、new[]/delete[]函数可以申请多个空间和释放多个空间,虽说这些函数在c++中都可以使用,但最好不要混用。

六、C++的函数

  1、C++在main函数之前就可以执行函数,而C不可以,C执行函数是以main函数为入口。

  2、C++的重载:C++定义函数是可以取相同的名字,但参数一定要不同(数量,类型,排放的位置等)

          相同的名字只是作为程序员取的,在编译时函数的名字会与参数的类型相组合,生成一个独一无二的名字。

  3、内联函数:内联函数和宏函数功能差不多,只是内联函数有返回值。就是在需要用到内联函数的代码时,直接将内联函数的代码拷贝到调用者哪里。

  4、C++函数的参数可以有默认值       比如void swap(int a=9,int b=8);

    函数调用时如果有给函数传递参数,那么优先调用这个参数,如果没有,则会调用默认值。

     

最新文章

  1. wampserver中Apache启动不了的问题
  2. NSTimer用法,暂停,继续,初始化
  3. 【转载】主数据管理(MDM)与元数据管理
  4. unity3d 扩展NGUI Tweener —— TweenFillAmount
  5. 《深入浅出Node.js》第1章 Node简介
  6. ZOJ 3791 An Easy Game(DP)
  7. hdu4505小Q系列故事——电梯里的爱情
  8. iOS 从C移植项目到Objective-C
  9. jeasyui制作计划-ajax学习
  10. 前端总结&#183;基础篇&#183;CSS(三)补充
  11. 利用 os.walk() 遍历目录
  12. RELabel : 一个极简的正则表达式匹配和展示框架
  13. 实现数组元素互换位置(乘机理解java参数传递)
  14. Session 和 Cookie 区别
  15. H5之画布canvas小记,以及通过画布实现原子无规则运动
  16. SSE图像算法优化系列十八:三次卷积插值的进一步SSE优化。
  17. 【性能优化之道】每秒上万并发下的Spring Cloud参数优化实战
  18. html总结:float实现span和input输入框同行
  19. springboot + websocket + spring-messaging实现服务器向浏览器广播式
  20. (ecj)Eclipse的Java编译器分析之一——ecj介绍

热门文章

  1. C# StreamReader与StreamWriter
  2. [转帖]关于Ubuntu与Debian的关系,了解!
  3. PostgreSQL逻辑复制到kafka-实践
  4. 10分钟学会RabbitMQ安装部署
  5. eclipse project---&gt;clean作用
  6. DNS服务器搭建笔记
  7. AtCoder,Codeforces做题记录
  8. Android 开源项目及库汇总(2)
  9. IE6兼容笔记
  10. vue单页应用首次加载太慢之性能优化