c与c++的一些区别

c与c++的一些区别

参考

https://blog.csdn.net/cherrydreamsover/article/details/81835976

在这里自己再总结一下

面向过程和面向对象的区分:

面向过程(c语言)

从程序的开始一直到程序的结束,根据每个步骤需要做的内容进行实现,把问题的解决分给各个步骤,步骤与步骤之间具有高耦合性。

面向对象(c++)

在程序中,根据程序需要完成的功能来分别进行实现,把问题的解决分为各个对象,这些对象目的是完成需要他们完成的功能。

优缺点
引用链接中的例子

(1)用面向过程写出来的程序就像一份蛋炒饭,也就是米饭和炒的菜均匀的混合在了一起,因此蛋炒饭入味均匀,不会像盖浇饭那样,可能有时候吃的菜多饭少,还有时候菜少饭多。但是如果你不喜欢吃蛋炒饭,只想吃肉炒饭,那么原来做的这份蛋炒饭就得倒掉了,重新做一份肉炒饭,厨师就得辛苦了!

(2)用面向对象写出来的程序就像一份盖浇饭,也就是米饭和盖菜分别做好,将盖菜放在米饭上面,盖浇饭虽然没有蛋炒饭那样入味均匀,但是如果给了你一份土豆丝盖饭,你又不想吃了,换成牛肉盖饭,厨师只需要将米饭上面的土豆丝倒掉,重新做一份牛肉放在上面就好了。

一些具体语言方面的区别

关键字不同
  • C99有32个关键字
  • C++98有63个关键字
一些关键字的细微区别:
(1struct:在C语言中struct定义的变量中不能有函数,而在C++中可以有函数。
(2)malloc :malloc函数的返回值为void*,在C语言中可以赋值给任意类型的指针,在C++中必须强制类型转换,否则报错。
(3struct和class:class是对struct的扩展,struct默认的访问权限是public,而class默认的访问权限是private。

返回值
  • c语言将没有指定返回值类型的函数默认返回int型

  • c++中如果一个函数没有返回值则必须指定为void

img

缺省参数
  • 缺省参数是声明或定义函数时为函数的参数指定一个默认值。在调用该函数时, 如果没有指定实参则采用该默认值,否则使用指定的参 。(C语言不支持缺省参数

这里写图片描述

//半缺省参数
void FunTest(int _iParam1, int _iParam2 = 0 )
{}
void FunTest(int _iParam1, int _iParam2 = 0 , int _iParam3/* = 0*/)
{}
void FunTest(int _iParam1, int _iParam2 /* = 0*/,int _iParam3 = 0)
{}
//全缺省参数
void FunTest(int _iParam1 = 0, int _iParam = 1)
{ }

//注意:慎用缺省函数,否则会产生二义性
void FunTest ()
{}
void FunTest (int a = 10 )
{}
//假如使用不带实参方式调用FunTest()函数时,编译器将不知道调用哪一个,产生二义性
函数重载
  • 函数重载:函数重载是函数的一种特殊情况,指在同一作用域中,声明几个功能类似的同名函数, 这些同名函数的形参列表(参数个数、类型、顺序)必须不同 ,返回值类型可以相同也可以不同,常用来处理实现功能类似数据类型不同的问题。(C语言没有函数重载,C++支持函数重载)。

这里写图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Zsc_02

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值