C和C++的区别

C和C++的区别

可以先从大方向上说一下C和C++的区别
  • 比如说,首先,C语言是面向过程的语言,C++是面向对象的语言;那么,什么又是面向过程和面向对象呢?面向过程的语言:比如说,要去做一件事情,那么我就需要知道这件事情要怎么做,第一步应该做什么,第二步应该做什么,当我将这些步骤都一一罗列出来之后,我就会按部就班的一步一步去执行,当我将这些步骤全部都执行完成了之后,那么我的这件事情也就完成了,那么面向过程的思路是如何体现在程序设计中的呢?就比如,我可以将刚才所做事情的一个一个的步骤封装成为一个一个的函数,通过函数之间的调用关系,从而去完成一件事情。所以说,当我们在使用面向过程的思路去编程的时候,我们就需要清楚的知道我们每一步需要干什么,从而最终完成所要作的事情;那么什么又是面向对象的语言呢?当解决一个问题的时候,面向对象会把事物抽象成对象的概念,就是说这个问题里面有哪些对象,然后给对象赋一些属性和方法,然后让每个对象去执行自己的方法,问题得到解决;那么,现在,举一个简单的例子:
问题: 冰箱里面放有脏衣服,怎么洗干净?

面向过程:
1 执行加洗衣粉方法;
2 执行加水方法;
3 执行洗衣服方法;
4 执行清洗方法;
5 执行烘干方法;
拆成一个个步骤,通过一个个方法的执行解决问题。
面向对象:洗衣机对象和人对象
洗衣机: 加入一些属性和方法 洗衣服方法 清洗方法 烘干方法
人:加洗衣粉方法 加水方法 然后 人.加洗衣粉 人.加水 洗衣机.洗衣服 洗衣机.清洗 洗衣机.烘干

C和C++的输入输出也是不一样的
  • C语言使用printf/scanf函数进行输入和输出;C++用cout/cin进行数据的输入和输出,前面一组是C的库函数,C++使用的是ostream和istream类型的对象;printf和scanf需要注意输入的变量类型),cin和cout不需要注意输入的变量类型,这也使得C++的输入和输出更加的便捷
变量的定义位置不一样
  • C中变量要放在语句之前定义,否则会报错(变量的定义一定要放在最前面,否则就会出错);C++中的变量定义位置并没有说一定要放在程序的最前买,但是一定要放在使用这个变量的前面
命名空间
  • C语言中没有命名空间这样一个作用域,C语言中只有全局作用域和局部作用域;
  • C++中引入了命名空间这一作用域,可以很好的解决C语言中名字冲突的问题
函数重载
  • C语言是不支持函数重载的—原因在于—在C语言中,编译器在编译过程会将我们的函数重命名,具体的方法就是在我们的函数名前加上“_“修饰符,通过这种方式就可以在我们的符号表种查找到了,但是假如有两个相同的函数,编译之后进行相同的重命名,在符号表中生成的函数名一样,那么就无法区分到底是哪个函数了,所以这也就是我们的C语言为什么不支持函数重载的原因了。C++支持函数重载;在C++中,既然支持函数重载,那么它肯定对C语言在这方面进行了优化,具体的方法就是在我们的函数名后面加上参数然后生成我们符号表中的函数名称。
C++还支持带有默认值的函数,也就是缺省参数
  • 缺省参数是声明或定义函数时为函数的参数指定一个默认值。在调用该函数时,如果没有指定实参则采用该默认值,否则使用指定的实参
C++对C功能的拓展小结
  • 允许使用以//开头的注释
  • 对变量的定义可以出现在程序中的任何行(但必须在引用该变量之前)
  • 提供了标准输入输出流对象cin和cout,他们不用指定输入输出的格式(如%d),使得输入输出更加的方便
  • 可以用const定义常变量
  • 可以利用函数重载实现用同一函数名代表功能类似的函数,以方便使用,提高可读性
  • 可以利用函数模板,简化同一类函数的编程工作
  • 可以使用带默认值的参数的函数,是函数的调用更加的灵活
  • 提供变量的引用类型,即为变量提供一个别名,将引用作为函数的形参,可以实现通过函数的调用来改变实参变量的值
  • 增加了内联函数,用来提高程序的效率
  • 增加了单目的作用域运算符,这样在局部变量作用域内也能引用全局变量
  • 可以用string类定义字符串变量,使得对字符串的运算更加方便
  • 用new和delete运算符替代malloc和free函数,使得分配动态空间更加的方便
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值