和C的区别:

1.概念:

C++ 是一种静态类型的、编译式的、通用的、大小写敏感的、不规则的编程语言,支持过程化编程、面向对象编程和泛型编程。

C++ 被认为是一种中级语言,它综合了高级语言和低级语言的特点。

C++的很多基础语法跟C差不多。

2. 函数默认值:

C89标准的C语言不支持函数默认值,C++支持函数默认值,且需要遵循从右向左赋初始值。

3.函数重载:

C语言不存在函数重载,C++根据函数名参数个数参数类型判断重载,属于静多态,必须同一作用域下才叫重载。

C不有是因为编译器在编译的时候只会给函数重命名,所以在编译器看来重载函数们都是一样的(编译器不知道该调用哪个)。C++的重载函数们生成的符号表是不一样的(根据返回类型和参数类型数量等区分),所以可以搞函数重载.

4.const:

C中的const叫只读变量,只是无法做左值的变量;C++中的const是真正的常量,但也有可能退化成c语言的常量,默认生成local符号。

5.分配内存:

a. malloc()和free()是C语言中动态申请内存和释放内存的标准库中的函数。而new和delete是C++运算符。new和delete底层其实还是调用了malloc和free。

b. malloc时需要指定大小,还需要类型转换。new时不需要指定大小因为它可以从给出的类型判断,并且还可以同时赋初始值。(这也使得malloc不安全)

c. free只释放空间,delete先调用析构函数再释放空间(如果需要).同理,new也是先调用构造函数再申请空间。

d. 内存不足(开辟失败)时处理方式不同。malloc失败返回0,new失败抛出bad_alloc异常。

e. new和malloc开辟内存的位置不同。malloc开辟在堆区,new开辟在自由存储区域。

6.作用域:

多了个名字空间(namespace),所谓名字空间就是namespace,我们定义一个名字空间就是定义一个新作用域。

7.布尔常量:

布尔常量共有两个,它们都是标准的 C++ 关键字:

True 和 false,顾名思义就是对与错。

(C里面都是让程序员自己定义)

8.Lambda 函数:

C++11 提供了对匿名函数的支持,称为 Lambda 函数(也叫 Lambda 表达式)。

Lambda 表达式把函数看作对象。Lambda 表达式可以像对象一样使用,比如可以将它们赋给变量和作为参数传递,还可以像函数一样对其求值。

Lambda 表达式本质上与函数声明非常类似。

表达式例子:

[capture](parameters)->return-type{body}

[capture]:捕捉列表。捕捉列表总是出现在 lambda 表达式的开始处。事实上,[] 是 lambda 引出符。编译器根据该引出符判断接下来的代码是否是 lambda 函数。捕捉列表能够捕捉上下文中的变量供 lambda 函数使用。

(parameters):参数列表。与普通函数的参数列表一致。如果不需要参数传递,则可以连同括号 () 一起省略。

mutable:mutable 修饰符。默认情况下,lambda 函数总是一个 const 函数,mutable 可以取消其常量性。在使用该修饰符时,参数列表不可省略(即使参数为空)。

->return_type:返回类型。用追踪返回类型形式声明函数的返回类型。出于方便,不需要返回值的时候也可以连同符号 -> 一起省略。此外,在返回类型明确的情况下,也可以省略该部分,让编译器对返回类型进行推导。

{statement}:函数体。内容与普通函数一样,不过除了可以使用参数之外,还可以使用所有捕获的变量。 在 lambda 函数的定义式中,参数列表和返回类型都是可选部分,而捕捉列表和函数体都可能为空。

例子如下:

[](int x, int y){ return x < y ; }

[](int x, int y) -> int { int z = x + y; return z + x; }

其实也不是很玄乎,匿名函数本质上就是个随手用的函数,省去了定义的麻烦,直接用完就丢。也可以作为传递给某些应用,比如消息处理。

9.输入输出:

引用:https://www.runoob.com/cplusplus/cpp-basic-input-output.html

博客园:Parachute黑喵

学习C/C++编程知识,感觉自学C++有难度的同学,可以点击C++编程,一起来交流学习!

C/C++基础语法复习(一):C++与C语言的区别,主要有这些!相关推荐

  1. python基础语法复习[二] 函数、类

    python基础语法复习[二] 前言 一.函数 1.基本概念 2.一般实例 3.参数传递 (1)传不可变对象 (2)传可变对象 4.函数递归调用实例 (1)eg:实现字符串的反转: (2)递归思想画树 ...

  2. 编程类-----matlab基础语法复习(1)

    2019年美赛随笔记录: 具体功能:基础语法+基本运算+画图+矩阵+excel读取....... 所遇问题及其解决方案:         1.   que:matlab中plot画图无法复制下来图片? ...

  3. C/C++基础语法复习(三):C++重载函数,多态,虚函数

    1.重载运算符和重载函数: C++ 允许在同一作用域中的某个函数和运算符指定多个定义,分别称为函数重载和运算符重载. 重载声明是指一个与之前已经在该作用域内声明过的函数或方法具有相同名称的声明,但是它 ...

  4. C/C++基础语法复习(二):C++ 面向对象编程,你需要知道的点

    a.定义: 类定义是以关键字 class 开头,后跟类的名称.类的主体是包含在一对花括号中.类定义后必须跟着一个分号或一个声明列表. 关键字 public 确定了类成员的访问属性.在类对象作用域内,公 ...

  5. python-函数模块基础语法复习

    # test1 def greet_user():print("hello") greet_user()# test2 def greet_user(username):#形参pr ...

  6. OC基础语法-1.OC和C语言的对比

    1.OC和C语言的对比 Objective-C ================== 由于OC语言是基于C语言基础添加了面向对象的语法衍生而来,所以OC完全兼容C语言. 源文件对比 C中的源文件主要是 ...

  7. Python基础语法-Python,Java,C++变量互换值的区别

    两个变量交换数值 C++ #include"iostream" using namespace std; int main(void){int a = 1;int b = 2;in ...

  8. Rust语言开发基础(六)基础语法

    2019独角兽企业重金招聘Python工程师标准>>> 一.变量的定义和使用 其它常见的编程语言对变量的定义通常是通过声明类型和使用关键new来创建一个变量,但Rust不是,Rust ...

  9. python中matrix是什么意思_Python的基础语法

    Python的基础语法 在对Python有了基础的认识之后,下面来了解一下Python的基础语法,看看它和C语言.java之间的基础语法差异. 一.变量.表达式和语句 Python中的语句也称作命令, ...

最新文章

  1. Elasticsearch 在各大互联网公司大量真实的应用案例!
  2. Web压力测试系统 nGrinder
  3. 654. Maximum Binary Tree最大二叉树
  4. 纽约时报:人们正成为移动通讯的奴隶
  5. Android 中英文语言切换
  6. jq之$(“:button“)
  7. 编程实现 无符号乘法溢出判断
  8. Google App Engine已经支持JAVA了
  9. zabbix中文乱码设置
  10. c/c++_消除非标准警告
  11. PyTorch:全局函数
  12. 闲谈IPv6-体会一下移动IP路由扩展头以及地址选项头的实际操作(Howto)
  13. 程序员开发常用英语词汇
  14. 只需用Shift键就能提升Mac开机速度的三个方法
  15. 华为od统一考试B卷【按身高体重排队】C语言 实现
  16. 问世到现在电子计算机的性能,一级计算机练习.doc
  17. 使用Godaddy续费我的域名时遇到支付问题
  18. Python之闭包与装饰器
  19. Java——ZZULIOJ_1043: 最大值
  20. 2022年京东图书总榜出炉

热门文章

  1. debian php安装pdo扩展,docker安装PHP扩展2020-05-25
  2. 九年级计算机上册教学总结,九年级信息技术教学工作总结
  3. java date.from_java datefromat
  4. android 控件覆盖关系,安卓子控件抢占父控件点击事件或者焦点问题
  5. linux内核udp校验和计算函数,Linux 内核IP和UDP检验和计算
  6. JMS学习二(简单的ActiveMQ实例)
  7. 动态分配方式计算学生成绩
  8. 隐藏esp_汽车一键启车主必须知道的几个“隐藏”技巧
  9. hint为什么不显示_英雄联盟手游kda活动为什么没有?kda女团活动在哪里怎么不显示...
  10. 智慧城市知识图谱模型与本体构建方法