一、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);

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

     

C++ - C++简介的更多相关文章

  1. ASP.NET Core 1.1 简介

    ASP.NET Core 1.1 于2016年11月16日发布.这个版本包括许多伟大的新功能以及许多错误修复和一般的增强.这个版本包含了多个新的中间件组件.针对Windows的WebListener服 ...

  2. MVVM模式和在WPF中的实现(一)MVVM模式简介

    MVVM模式解析和在WPF中的实现(一) MVVM模式简介 系列目录: MVVM模式解析和在WPF中的实现(一)MVVM模式简介 MVVM模式解析和在WPF中的实现(二)数据绑定 MVVM模式解析和在 ...

  3. Cassandra简介

    在前面的一篇文章<图形数据库Neo4J简介>中,我们介绍了一种非常流行的图形数据库Neo4J的使用方法.而在本文中,我们将对另外一种类型的NoSQL数据库——Cassandra进行简单地介 ...

  4. REST简介

    一说到REST,我想大家的第一反应就是“啊,就是那种前后台通信方式.”但是在要求详细讲述它所提出的各个约束,以及如何开始搭建REST服务时,却很少有人能够清晰地说出它到底是什么,需要遵守什么样的准则. ...

  5. Microservice架构模式简介

    在2014年,Sam Newman,Martin Fowler在ThoughtWorks的一位同事,出版了一本新书<Building Microservices>.该书描述了如何按照Mic ...

  6. const,static,extern 简介

    const,static,extern 简介 一.const与宏的区别: const简介:之前常用的字符串常量,一般是抽成宏,但是苹果不推荐我们抽成宏,推荐我们使用const常量. 执行时刻:宏是预编 ...

  7. HTTPS简介

    一.简单总结 1.HTTPS概念总结 HTTPS 就是对HTTP进行了TLS或SSL加密. 应用层的HTTP协议通过传输层的TCP协议来传输,HTTPS 在 HTTP和 TCP中间加了一层TLS/SS ...

  8. 【Machine Learning】机器学习及其基础概念简介

    机器学习及其基础概念简介 作者:白宁超 2016年12月23日21:24:51 摘要:随着机器学习和深度学习的热潮,各种图书层出不穷.然而多数是基础理论知识介绍,缺乏实现的深入理解.本系列文章是作者结 ...

  9. Cesium简介以及离线部署运行

    Cesium简介 cesium是国外一个基于JavaScript编写的使用WebGL的地图引擎,一款开源3DGIS的js库.cesium支持3D,2D,2.5D形式的地图展示,可以自行绘制图形,高亮区 ...

  10. 1.Hibernate简介

    1.框架简介: 定义:基于java语言开发的一套ORM框架: 优点:a.方便开发;           b.大大减少代码量;           c.性能稍高(不能与数据库高手相比,较一般数据库使用者 ...

随机推荐

  1. elasticsearch 冷热数据的读写分离

    步骤 一.冷热分离集群配置 比如三个机器共六个node的es集群. 每个机器上各挂载一个ssd 和 一个sata.每个机器需要启动两个es进程.每个进程对应不同类型的磁盘. 关键配置: node.ma ...

  2. 接口自动化--数据加密之AES

    在接口测试中,会遇到加密的请求数据,例如:常用的base64加密,AES加密,在这里,简述用Python转化AES的加密方法 原理 官网链接:https://pycryptodome.readthed ...

  3. windows VS2013中使用<pthread.h>

    1. 下载pthreads-w32-2-9-1-realease.zip 地址:http://www.mirrorservice.org/sites/sourceware.org/pub/pthrea ...

  4. etcd数据单机部署

    单机下载 版本信息请参考https://github.com/etcd-io/etcd/releases 本次以最新版本3.4.1为例https://github.com/etcd-io/etcd/r ...

  5. PTA(Basic Level)1012.数字分类

    给定一系列正整数,请按要求对数字进行分类,并输出以下 5 个数字: A1 = 能被 5 整除的数字中所有偶数的和: A2 = 将被 5 除后余 1 的数字按给出顺序进行交错求和,即计算 n1−n2+n ...

  6. [转帖]教你如何修改运行中的docker容器的端口映射

    教你如何修改运行中的docker容器的端口映射   在docker run创建并运行容器的时候,可以通过-p指定端口映射规则.但是,我们经常会遇到刚开始忘记设置端口映射或者设置错了需要修改.当dock ...

  7. mybatis+mysql 返回主键

    需求:使用MyBatis往MySQL数据库中插入一条记录后,需要返回该条记录的自增主键值. 方法:在mapper中指定keyProperty属性,示例如下: <insert id="i ...

  8. 07、poly-A内参和杂交内参(arrayanalysis的问题)

    为了验证杂交的质量,Affymetrix公司加入了两类嵌入探针组: 一.poly-A内参:包括lys.phe.thr.dap 对应的探针组名称为:AFFX-r2-Bs-lys-3_at.AFFX-r2 ...

  9. js事件冒泡、阻止事件冒泡以及阻止默认行为

    事件冒泡 当事件发生后,这个事件就要开始传播(从里到外或者从外向里).为什么要传播呢?因为事件源本身(可能)并没有处理事件的能力,即处理事件的函数(方法)并未绑定在该事件源上.例如我们点击一个按钮时, ...

  10. Android多渠道打包且根据不同产品打包不同的assets资源目录

    因为项目中存在多种环境,既要区分bebug与release版本,release又要区分测试环境与生产上线环境,每次打包都得浪费不少的等待时间:并且哪个版本有问题还得去切换环境一个个打包,关键是还得牢记 ...