C与C++的区别

一、面向对象与面向过程的区别

面向过程

面向过程编程是就分析出解决问题题的不走,然后把这些步骤一步一步的实现,使用的时候一个一个的一次调用就可以了。

面向对象

面向对象编程就是把问题分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描述某个市委在整个解决问题的步骤中的行为。

举个例子(玩五子棋)

使用面向过程的思想来考虑就是:开始游戏,白棋先走、绘制画面、轮到黑子、绘制画面、判断输赢、重复之前的过程,输出最终结果。

使用面向对象的思想来考虑就是:玩家系统、棋盘系统、判定系统、输出系统。

面向对象就是高度的将实物抽象化,也就是功能的划分,面向过程就是自顶向下编程,也就是步骤的划分

二、具体语言的区别

1、关键字不同

C99有32个关键字

C++98有63个关键字

一些关键字细微的区别

1、struct:在C语言猴子那个struct定义的变量中不能由函数,在C++中可以有函数

2、malloc:malloc的返回值是void*,在C语言中可以赋值给任意类型的指针,在C++中必须要进行强制类型转换,否则会报错。

3、class和struct:class是对struct的扩展,struct的默认访问权限是public,而class的默认访问全显示private

2、后缀名不同

C源文件的后缀是.c,C++源文件的后缀是.cpp,在VS中,如果在创建源文件的时候什么都不给,默认的就是.cpp

3、返回值不同

在C语言中,如果一个函数没有指定返回值得类型,默认的返回值为int类型,并且会返回一个随机数,一般为0xCCCCCCCC,C++中如果一个函数没有返回值,则必须要指定为void,否则编译不会通过。

4、参数列表不同

在C语言中,函数没有指定参数列表的时候,默认可以接受多个参数,但是不支持无名参数,在C++中,因为严格的参数类型检测,没有参数列表的函数,默认为void,不接受任何参数,但是他支持无名参数。

5、缺省参数

缺省参数的声明或定制函数时的参数指定一个默认值。在调用该函数时,如果没有指定实参则可以采用该默认值,则使用指定的参数。但是这在C语言中是不支持的。

6、函数重载

函数重载是函数的一种特殊情况,指的是在同一作用域中,声明几个功能类似的同名函数,这些同名函数的形参列表必须不同,或者是在类中使用const修饰的函数和没有使用const修饰的函数,常用来处理实现功能类似但是数据类型不同的问题。在C语言中没有函数重载,是因为C语言对函数名的修饰只是在函数名前添加一个下划线,但是C++对函数名的修饰会添加上该函数的返回值和参数列表。

7、标准输入输出

在C语言中使用的是scanf()和printf()来实现的,但是C++中是使用类来实现的。cin、cout对象,他们本身并不是C++语言的组成部分,在C++中不提供内在的输入输出运算符,这时与其他语言不相同的地方,他的输入和输出是通过C++中的类来实现的,cin和cout都是这些类的实例,是在C++语言的外部实现的。

8、动态内存管理

C语言使用的是malloc/free函数,C++在此基础上还添加了new/delete两个关键字。

9、const修饰的变量

C语言中const修饰的变量不可以用在定义数组时的大小,并且在定义的时候可以不设定初始值,但是在C++中修饰的变量在定义的时候必须要设定初始值,并且可以用在定义数组的大小,,如果不进行取地址或解引用的话,是存放在符号表中的,不开辟内存。

你可能感兴趣的:(C++学习笔记)