C/C++的区别?(总结)

首先在大体上,C 是面向过程的语言,而 C++是面向对象的语言,因此 C++语言中有类和对象以及继承多态这样的 OOP 语言必备的内容,此外 C++支持模板,运算符重载,异常处理机制,以及一个非常强的 C++标准模板库 STL,另外一个 Boost 库现在也归属 C++标准库,提供了很多强大的功能。C++支持类对象,类和类之间的代理,组合,继承,多态等等面向对象的设计,有很多的设计模式可以直接使用,因此在设计大型软件的时候,通常都会采用面向对象语言,而不会采用面向过程语言可以更好的进行模块化设计,做到软件设计的准则:高内聚,低耦合!
在具体的问题上
1、namespace名字空间作用域
C语言只有函数的局部作用域和全局作用域
C++语言由函数的局部作用域、全局的名字空间作用域、类的作用域

2、C 只能写面向过程的代码,而 C++既可以写面向过程的代码,也可以实现面向对象的代
码;既然 C++是面向对象的 OOP 语言,因此它还有非常强大的设计模式,比如单例,工厂,
观察者模式等等,这些在 C 语言当中都是不支持的。

3、C 和 C++一个典型的区别就在动态内存管理上了,C 语言通过 malloc 和 free 来进行堆
内存的分配和释放,而 C++是通过 new 和 delete 来管理堆内存的

4、外强制类型转换上也不一样,C 的强制类型转换使用()小括号里面加类型进行类型强转的,而 C++有四种自己的类型强转方式,分别是 const_cast,static_cast,reinterpret_cast和 dynamic_cast

5、C 和 C++的输入输出方式也不一样,printf/scanf,和 C++的 cout/cin 的对别,前面一组是 C 的库函数,后面是 ostream 和 istream 类型的对象。

6、C++还支持带有默认值的函数,函数的重载,inline 内联函数,这些 C 语言都不支持,当然还有 const 这个关键字,C 和 C++也是有区别的,但是这都是目前最常用的 C89 标准的 C 内容,在C99 标准里面,C 语言借鉴了 C++的 const 和 inline 关键字,这两方面就和C++一样了。

7、由于 C++多了一个类,因此和 C 语言的作用域比起来,就多了一个类作用域,此外,C++还支持 namespace 名字空间,可以让用户自己定义新的名字空间作用域出来,避免全局的名字冲突问题。

8、C++不仅支持指针,还支持更安全的引用,不过在汇编代码上,指针和引用的操作是一样的由于 C++是面向对象的语言,

9、在 C++中,struct 关键字不仅可以用来定义结构体,它也可以用来定义类,在C语言中struct定义结构体

10、C++函数支持函数模板写一套函数代码,可以用任意的类型进行实例化,非常适合做泛型编程
模板是编译阶段实例化,每一种类型都会实例化一个模板函数

11、C语言不支持函数重载,是因为C编译器根据函数名生成符号,所有函数名是不能相同的;C++语言支持重载,是因为C++编译器是根据函数名和形参列表生成函数符号的,所以:

  • 1.一组函数名相同,参数列表不同的函数,构造一组函数重载
  • 2.函数重载,需要这些函数先处在同一个作用域
    以上就是C语言和C++一些区别总结;
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值