C#与C++的异同,侧重相同点,面向过程与面向对象的异同点
展开全部
1、C#和c++的库文件引入机制不同,一个是头文件,一个是命名空间,c#的命名空间灵活很多。
2、c#的任何数据类型,不管是简单数据类型、结构体、类、接口、数组,都可以当作函数的返回值,c++却有的不行 ,c++很多东西只能返回指针,不能直接体现程序开发逻辑。
举例c++里返回一个int数组,只能写成int*,你是不能直接直接知道,返回的究竟只是个指针还是一个数组,并且要知道数组数量是很复杂的事情,c#里同样的事情简单到极致,同样的事情c++可能建立结构体或者类,才能方便点。你会发现实际情况里返回一个数组,是实际开发中最有可能的。可是c++铁支持的不好。
3、指针,指针的问题,很多人说是c、c++的强悍,其实用过c#里的ref的人会发现c的指针是多么的多余。而且指向指针的指针这类东西,对于读程的人无疑是地狱里的噩梦。所以c++适合性能要求极致或者不支持别的语言的地方,c#适合其他所有情况。没错,c#能做的事情,c++都能做,但是c#能很短时间做到的事情,这里的时间是指学习、开发、调试等这些时间,c#的开发和学习效率不是c++能比得。
4、简单性,c++的复杂很多编程多年的人,特别是不是用c、c++起步的人,再去学去用c、c++里比较复杂的地方的时候都会觉得用c++有太多细节需要考虑。更不要说新手了,其实你会发现使用java、c#的人谈论的大逻辑内容肯定比c++的使用者多,因为c++的使用者会需要面对更多小着眼点的难题,根本不是逻辑层面上的。
5、类的支持,c++是目前流行语言中唯一支持多继承的,这也是复杂性的体现,大多数的时候其实类很少那样去用,其实理由很简单,学过数据结构的人就应该只到存储结构----树、图,所有的复杂关系几乎都可以用这些来表示,但是所有的树或图都可以转换成最简单的树二叉树,也就是说二叉树就已经可以表示实际世界的关系了,而c#的类关系就是一颗二叉树。所以c++的多继承某种程度上是多余的。
6、C++的动态绑定和静态绑定,这个其实基本用过动态绑定的语言的人都不会觉得有必要存在静态绑定的。。。。当然这只是本人的意思,虽然同意的人还蛮多,这主要也体现了c++的复杂性。
7、语法的多义性,c++里在if里放一个赋值语句是可以的,但是c#里则不行,这类问题,包括操作符重载这类,极端的不利于调试和读程,几乎可以说灵活即失败。。。
8、c#的语法支持比较完整、纯正的委托、事件、属性、索引器等这些,包括异常处理这类东西,c++都是模拟的。
9、c++有很多语法、和功能都会把初学者和不好的c++程序员待上外路,比如出现 int***、操作符重载等等很多。c# 这类东西少很多很多。简单了。
10,面向过程和面向对象,这个标的很大,用的好的面向对象编程可以完全模拟面向过程的模式,利用静态方法和静态类就可以了,而面向对象本身的三个基本特性就是解决了面向过程在大规模开发中的不足而存在的,即封装、多态、继承,简单的说封装是为了尽可能对类外部隐藏数据,以免有被外部污染的可能;多态是为了以不同的方式、不同的类来实现一个公共接口(行为)的能力,这完全模拟显示世界比如同样是猫科动物的狮子和猫,都能叫,能叫就是同样继承自猫科的行为能力,叫声就是具体的行为实现 ,两个类对同一个方法的不同实现就是多态的一种主要形式。继承则是为了能够重复利用现有的方法实现,类中已经定义好的存储结构。
面向对象用的好可以比面向过程更好的组织实际的方法实现和存储结构。
2、c#的任何数据类型,不管是简单数据类型、结构体、类、接口、数组,都可以当作函数的返回值,c++却有的不行 ,c++很多东西只能返回指针,不能直接体现程序开发逻辑。
举例c++里返回一个int数组,只能写成int*,你是不能直接直接知道,返回的究竟只是个指针还是一个数组,并且要知道数组数量是很复杂的事情,c#里同样的事情简单到极致,同样的事情c++可能建立结构体或者类,才能方便点。你会发现实际情况里返回一个数组,是实际开发中最有可能的。可是c++铁支持的不好。
3、指针,指针的问题,很多人说是c、c++的强悍,其实用过c#里的ref的人会发现c的指针是多么的多余。而且指向指针的指针这类东西,对于读程的人无疑是地狱里的噩梦。所以c++适合性能要求极致或者不支持别的语言的地方,c#适合其他所有情况。没错,c#能做的事情,c++都能做,但是c#能很短时间做到的事情,这里的时间是指学习、开发、调试等这些时间,c#的开发和学习效率不是c++能比得。
4、简单性,c++的复杂很多编程多年的人,特别是不是用c、c++起步的人,再去学去用c、c++里比较复杂的地方的时候都会觉得用c++有太多细节需要考虑。更不要说新手了,其实你会发现使用java、c#的人谈论的大逻辑内容肯定比c++的使用者多,因为c++的使用者会需要面对更多小着眼点的难题,根本不是逻辑层面上的。
5、类的支持,c++是目前流行语言中唯一支持多继承的,这也是复杂性的体现,大多数的时候其实类很少那样去用,其实理由很简单,学过数据结构的人就应该只到存储结构----树、图,所有的复杂关系几乎都可以用这些来表示,但是所有的树或图都可以转换成最简单的树二叉树,也就是说二叉树就已经可以表示实际世界的关系了,而c#的类关系就是一颗二叉树。所以c++的多继承某种程度上是多余的。
6、C++的动态绑定和静态绑定,这个其实基本用过动态绑定的语言的人都不会觉得有必要存在静态绑定的。。。。当然这只是本人的意思,虽然同意的人还蛮多,这主要也体现了c++的复杂性。
7、语法的多义性,c++里在if里放一个赋值语句是可以的,但是c#里则不行,这类问题,包括操作符重载这类,极端的不利于调试和读程,几乎可以说灵活即失败。。。
8、c#的语法支持比较完整、纯正的委托、事件、属性、索引器等这些,包括异常处理这类东西,c++都是模拟的。
9、c++有很多语法、和功能都会把初学者和不好的c++程序员待上外路,比如出现 int***、操作符重载等等很多。c# 这类东西少很多很多。简单了。
10,面向过程和面向对象,这个标的很大,用的好的面向对象编程可以完全模拟面向过程的模式,利用静态方法和静态类就可以了,而面向对象本身的三个基本特性就是解决了面向过程在大规模开发中的不足而存在的,即封装、多态、继承,简单的说封装是为了尽可能对类外部隐藏数据,以免有被外部污染的可能;多态是为了以不同的方式、不同的类来实现一个公共接口(行为)的能力,这完全模拟显示世界比如同样是猫科动物的狮子和猫,都能叫,能叫就是同样继承自猫科的行为能力,叫声就是具体的行为实现 ,两个类对同一个方法的不同实现就是多态的一种主要形式。继承则是为了能够重复利用现有的方法实现,类中已经定义好的存储结构。
面向对象用的好可以比面向过程更好的组织实际的方法实现和存储结构。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询