当前位置:编程学习 > C/C++ >>

C、C++、C#三者编程语言的区别

 

从发展时间来说是先有C,然后有C++,然后有C#。

 

从结构上来说,C是面向过程的编程语言,C#,C++是面向对象的编程语言。

 

C++是C的升级,C#有点像C++和java的结合,更像java。

 

C++中C的语法全部成立,只是多了类的概念。

 

C# 是微软在C++的基础上融入了JAVA的网络优势自主开发的一种编程语言。

 

C++面向底层一点比较难,但可以开发出几乎所有你想要的功能,不过效率上就底啦。

 

C# 是微软推出的,面向网络编程的语言,语法结构和C++很相似,而且比C++简单多了,能实现现在社会上的大部分需求,而且开发效率很高。

 

————————————————————————————–

 

继承关系是C->C++->C#,C++完全向C兼容,C程序几乎不用修改即可在C++的编译器上运行.C++也称为带类的C,在C的基础上增加了许多面向对象的概念.虽然是C的扩展,但并不意味着C功能不如C++,最牛的操作系统是用C写的(不是C++哦).

 

C#是微软弄的一个东东,继承了C和C++的许多东西,但和两者基本上已完全不一样了.你可以把它当作一种全新的语言来学.

 

C语言是一种结构化编程语言。它层次清晰,便于按模块化方式组织程序,易于调试和维护。

 

C语言的表现能力和处理能力极强。它不仅具有丰富的运算符和数据类型,便于实现各类复杂的数据结构。它还可以直接访问内存的物理地址,进行位(bit)一级的操作。

 

由于C语言实现了对硬件的编程操作,因此C语言集高级语言和低级语言的功能于一体。既可用于系统软件的开发,也适合于应用软件的开发。

 

此外,C语言还具有效率高,可移植性强等特点。因此广泛地移植到了各类各型计算机上,从而形成了多种版本的C语言。

 

C++ 是在C的基础上改进后的一种编程语言,主要是增添了许多新的功能,难度也比C大,和C一样侧重于计算机底层操作,也就是系统软件的开发。

 

C#是在C++的基础上再一次改进后的编程语言,相比C++而言难度有所减小(微软是这么说的),侧重于网络和数据库编程。这3种都是编程语言,语法基本上是一样的,不过具体的内容差别还是挺大的。

 

VC++是一种编程软件,就相当于一个作业本,你学习了C++语言以后,就需要把这种编程语言写在一个作业本上,也就是写在VC这种编程软件上,来实现你需要的效果。

 

C++是C语言的升级版,c是c++的子集,c是面向过程的,c++是面向对象的。

 

C 语言与C++ 的区别有很多:

 

1,全新的程序思维,C 语言是面向过程的,而C++ 是面向对象的。

 

2,C 语言有标准的函数库,它们松散的,只是把功能相同的函数放在一个头文件中;而C++ 对于大多数的函数都是有集成的很紧密,特别是C 语言中没有的,C++ 中的API 是对Window 系统的大多数API 有机的组合,是一个集体。但你也可能单独调用API。

 

3,特别是C++ 中的图形处理,它和语言的图形有很大的区别。C 语言中的图形处理函数基本上是不能用在中C++ 中的。C 语言标准中不包括图形处理。

 

4,C 和C++ 中都有结构的概念,但是在C 语言中结构只有成员变量,而没成员方法,而在C++ 中结构中,它可以有自己的成员变量和成员函数。但是在C 语言中结构的成员是公共的,什么想访问它的都可以访问;而在VC++ 中它没有加限定符的为私有的。

 

4,C 语言可以写很多方面的程序,但是C++ 可以写得更多更好,C++ 可以写基于DOSr程序,写DLL,写控件,写系统。

 

5,C 语言对程序的文件的组织是松散的,几乎是全要程序处理;而C++ 对文件的组织是以工程,各文件分类明确。

 

6,C++ 中的IDE 很智能,和VB 一样,有的功能可能比VB还强。

 

7,C++ 对可以自动生成你想要的程序结构使你可以省了很多时间。有很多可用的工具如加入MFC 中的类的时候,加入变量的时候等等。

 

8,C++ 中的附加工具也有很多,可以进行系统的分析,可以查看API;可以查看控件。

 

9,调试功能强大,并且方法多样。

 

鉴于当下形势,如果要学的话就学C#。

 

C# 与C++ 比较的话,最重要的特性就是C# 是一种完全面向对象的语言,而C++ 不是,另外C# 是基于IL 中间语言和.NET Framework CLR 的,在可移植性,可维护性和强壮性都比C++ 有很大的改进。

 

C# 的设计目标是用来开发快速稳定可扩展的应用程序,当然也可以通过Interop 和Pinvoke 完成一些底层操作,但是对于一些和底层系统相关很紧密的程序(譬如说驱动程序),还是建议用C++ 来写。

 

C++ 不允许在一个构造函数中调用另外一个构造函数(称为委派构造函数调用),而C# 则允许。委派构造函数调用语法上非常自然和易懂,事实上,C++ 不提供这一特性并不是出于语法上的考虑,而是出于资源管理的考虑(这样的事情对C++ 来说还有很多很多)。

 

C++ 的构造函数用于分配资源,而析构函数用于释放资源,构造函数和析构函数调用必须匹配,否则就打破了C++ 的基本规则。如果允许委派构造函数调用,则显然会打破这一规则——构造函数被执行两次,而析构函数只执行一次。当然,对一些类,例如前面的那个Point 来说这不是个问题,但是从语言机制的角度讲这个特性可能属于“危险”的特性。注:在最新的C++ 标准提议草案中,Herb 等人有一个关于允许委派构造函数调用的提案,当然这很大程度上是为了方便C++ /CLI 绑定。

 

在C++ 构造函数中,虚函数调用会被编译器自动转为普通函数调用,而在C# 构造函数中允许进行虚函数调用。C++ 这样处理自然有它的原因——在C++ 中,构造函数执行完成后对象才初始化好,对于多态对象来说,也就意味着构造函数在背后执行了很重要的一件事情——初始化对象的虚函数表。

 

如果我们在基类的构造函数中调用了虚函数,则因为此时对象的虚函数表仍旧是基类的虚函数表,所以无法进行正确的虚函数调用。也就是这个原因,通常我们应该避免在构造函数中调用虚函数,因为它违背了虚函数的语义。而在C# 中,在对象的构造函数执行之前对象的类型信息就已经初始化好了,所以可以进行正常的虚函数调用。

 

基本上,这些就是两者之间的区别。

摘自:狗一样的男人's Blog

补充:软件开发 , C++ ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,