c++和c#的比较
c++和c#都学了一段时间了,不过c++还是停留在控制台应用程序的阶段,c#我直接就学的windows应用程序,现在的感觉的vc#的图形界面制作真的非常方便请问MFC制作...
c++和c#都学了一段时间了,不过c++还是停留在控制台应用程序的阶段,c#我直接就学的windows应用程序,现在的感觉的vc#的图形界面制作真的非常方便
请问MFC制作图形界面的程序是不是也和VC#一样方便的?
还有C++和C#除了有没有指针这个区别外还有没有大的区别了?
有没有哪类软件只能用C++作而不能用c#做的? 展开
请问MFC制作图形界面的程序是不是也和VC#一样方便的?
还有C++和C#除了有没有指针这个区别外还有没有大的区别了?
有没有哪类软件只能用C++作而不能用c#做的? 展开
10个回答
展开全部
c++和C#编程语言来说,只是它们的设计目的有所区别。
c++在设计之初希望提供先进的面向对象特性,同时提供很好的性能。但是为了保证和以往的程序、开发人员的知识兼容,c++与c语言几乎完全兼容。c语言
本身其实就是现代计算机的高级抽象,可以直接访问地址、通过指针可以访问几乎任何内存地址;堆和栈的结构体现等待。当然c++也就具有了这样的特性。随
着 c++的逐步发展,generic programming 泛型编程技术和stl标准模板库的引入,c++和c的差异越来越大。基本上c++是为了
高效地使用面向对象技术或者泛型技术编写大规模高性能应用程序(往往是一些相对比较底层的应用程序)而设计的。
c#通过底层的虚拟机机制减少了c/c++语言中常常容易发生的内存泄漏和安全性问题,代价是运行速度减慢。同样的由于简化了编程语言的复杂性(c#远远
比c++来得简单),大大提高了开发者得效率。另外c#具有.net庞大的类库,这个优势是c++所不具有的。因此c#非常合适开发企业中处理业务的应用
程序。同时微软所有的操作系统、服务器程序、桌面端程序都在向.net平台统一。在历史上与次类似的情形(指微软技术)只有在微软从16位平台向32位平
台转变的过程中发生过。因此现在.net的转变对开发者来说可能是痛苦的(因为要学习很多新的东西),但也充满了机会。
二、具体区别:
1.继承:C++支持多继承,C#类只能继承一个基类中的实现但可以实现多个接口。
2.数组:声明 C# 数组和声明 C++ 数组的语法不同。在 C# 中,“[]”标记出现在数组类型的后面。
3.数据类型:在C++中bool类可以与整型转换,但C#中bool 类型和其他类型(特别是 int)之间没有转换。long 类型:在 C# 中,long 数据类型为 64 位,而在 C++ 中为 32 位。
4.struct 类型:在 C# 中,类和结构在语义上不同。struct 是值类型,而 class 是引用类型。
5.switch 语句:与 C++ 中的 switch 语句不同,C# 不支持从一个 case 标签贯穿到另一个 case 标签。
6.delegate 类型:委托与 C++ 中的函数指针基本相似,但前者具有类型安全,是安全的。
7.从派生类调用重写基类成员。 base
8.使用 new 修饰符显式隐藏继承成员。
9.重写方法需要父类方法中用virtual声名,子类方法用override 关键字。
10.预处理器指令用于条件编译。C# 中不使用头文件。 C# 预处理器指令
11.异常处理:C#中引入了 finally 语句,这是C++没有的。
12.C# 运算符:C# 支持其他运算符,如 is 和 typeof。它还引入了某些逻辑运算符的不同功能。
13. static 的使用,static方法只能由类名调用,改变static变量。
14.在构造基类上替代 C++ 初始化列表的方法。
15.Main 方法和 C++ 及Java中的 main 函数的声明方式不同,Main而不能用main
16.方法参数:C# 支持 ref 和 out 参数,这两个参数取代指针通过引用传递参数。
17.在 C# 中只能在unsafe不安全模式下才使用指针。
18.在 C# 中以不同的方式执行重载运算符。
19.字符串:C# 字符串不同于 C++ 字符串。
20.foreach:C#从VB中引入了foreach关键字使得以循环访问数组和集合。
21.C# 中没有全局方法和全局变量:方法和变量必须包含在类型声明(如 class 或 struct)中。
22.C# 中没有头文件和 #include 指令:using 指令用于引用其他未完全限定类型名的命名空间中的类型。
23.C# 中的局部变量在初始化前不能使用。
24析构函数:在 C# 中,不能控制析构函数的调用时间,原因是析构函数由垃圾回收器自动调用析构函数 。
25构造函数:与 C++ 类似,如果在 C# 中没有提供类构造函数,则为自动生成默认构造函数。该默认构造函数将所有字段初始化为它们的默认值。
26.在 C# 中,方法参数不能有默认值。如果要获得同样的效果,需使用方法重载。
c++在设计之初希望提供先进的面向对象特性,同时提供很好的性能。但是为了保证和以往的程序、开发人员的知识兼容,c++与c语言几乎完全兼容。c语言
本身其实就是现代计算机的高级抽象,可以直接访问地址、通过指针可以访问几乎任何内存地址;堆和栈的结构体现等待。当然c++也就具有了这样的特性。随
着 c++的逐步发展,generic programming 泛型编程技术和stl标准模板库的引入,c++和c的差异越来越大。基本上c++是为了
高效地使用面向对象技术或者泛型技术编写大规模高性能应用程序(往往是一些相对比较底层的应用程序)而设计的。
c#通过底层的虚拟机机制减少了c/c++语言中常常容易发生的内存泄漏和安全性问题,代价是运行速度减慢。同样的由于简化了编程语言的复杂性(c#远远
比c++来得简单),大大提高了开发者得效率。另外c#具有.net庞大的类库,这个优势是c++所不具有的。因此c#非常合适开发企业中处理业务的应用
程序。同时微软所有的操作系统、服务器程序、桌面端程序都在向.net平台统一。在历史上与次类似的情形(指微软技术)只有在微软从16位平台向32位平
台转变的过程中发生过。因此现在.net的转变对开发者来说可能是痛苦的(因为要学习很多新的东西),但也充满了机会。
二、具体区别:
1.继承:C++支持多继承,C#类只能继承一个基类中的实现但可以实现多个接口。
2.数组:声明 C# 数组和声明 C++ 数组的语法不同。在 C# 中,“[]”标记出现在数组类型的后面。
3.数据类型:在C++中bool类可以与整型转换,但C#中bool 类型和其他类型(特别是 int)之间没有转换。long 类型:在 C# 中,long 数据类型为 64 位,而在 C++ 中为 32 位。
4.struct 类型:在 C# 中,类和结构在语义上不同。struct 是值类型,而 class 是引用类型。
5.switch 语句:与 C++ 中的 switch 语句不同,C# 不支持从一个 case 标签贯穿到另一个 case 标签。
6.delegate 类型:委托与 C++ 中的函数指针基本相似,但前者具有类型安全,是安全的。
7.从派生类调用重写基类成员。 base
8.使用 new 修饰符显式隐藏继承成员。
9.重写方法需要父类方法中用virtual声名,子类方法用override 关键字。
10.预处理器指令用于条件编译。C# 中不使用头文件。 C# 预处理器指令
11.异常处理:C#中引入了 finally 语句,这是C++没有的。
12.C# 运算符:C# 支持其他运算符,如 is 和 typeof。它还引入了某些逻辑运算符的不同功能。
13. static 的使用,static方法只能由类名调用,改变static变量。
14.在构造基类上替代 C++ 初始化列表的方法。
15.Main 方法和 C++ 及Java中的 main 函数的声明方式不同,Main而不能用main
16.方法参数:C# 支持 ref 和 out 参数,这两个参数取代指针通过引用传递参数。
17.在 C# 中只能在unsafe不安全模式下才使用指针。
18.在 C# 中以不同的方式执行重载运算符。
19.字符串:C# 字符串不同于 C++ 字符串。
20.foreach:C#从VB中引入了foreach关键字使得以循环访问数组和集合。
21.C# 中没有全局方法和全局变量:方法和变量必须包含在类型声明(如 class 或 struct)中。
22.C# 中没有头文件和 #include 指令:using 指令用于引用其他未完全限定类型名的命名空间中的类型。
23.C# 中的局部变量在初始化前不能使用。
24析构函数:在 C# 中,不能控制析构函数的调用时间,原因是析构函数由垃圾回收器自动调用析构函数 。
25构造函数:与 C++ 类似,如果在 C# 中没有提供类构造函数,则为自动生成默认构造函数。该默认构造函数将所有字段初始化为它们的默认值。
26.在 C# 中,方法参数不能有默认值。如果要获得同样的效果,需使用方法重载。
展开全部
请看
http://msdn.microsoft.com/zh-cn/library/aa287549(VS.71).aspx
C++ 和 C# 之间的比较
下表包含 C++ 和 C# 功能之间的重要比较。如果您是一位 C++ 程序员,此表将为您提供这两种语言的最重要差异。有关详细信息,请使用链接浏览详细的主题。
注意 C++ 和 C# 项目派生于不同的项目模型。有关 C++ 和 C# 项目之间差异的信息,请参见项目中的项管理和使用解决方案资源管理器。
功能 参考主题
继承:类只能继承一个基类中的实现。另外,类或接口可以实现多个接口。 class
interface
数组:声明 C# 数组和声明 C++ 数组的语法不同。在 C# 中,“[]”标记出现在数组类型的后面。 数组
bool 类型:bool 类型和其他类型(特别是 int)之间没有转换。 bool
long 类型:在 C# 中,long 数据类型为 64 位,而在 C++ 中为 32 位。 long
struct 类型:在 C# 中,类和结构在语义上不同。struct 是值类型,而 class 是引用类型。 struct
class
switch 语句:与 C++ 中的 switch 语句不同,C# 不支持从一个 case 标签贯穿到另一个 case 标签。 switch
delegate 类型:委托与 C++ 中的函数指针基本相似,但前者具有类型安全,是安全的。 delegate
从派生类调用重写基类成员。 base
请参见 override 的示例
使用 new 修饰符显式隐藏继承成员。 new
声明重写方法需要有 override 关键字。 override
预处理器指令用于条件编译。C# 中不使用头文件。 C# 预处理器指令
异常处理:使用 finally 语句。 try-finally
try-catch-finally
C# 运算符:C# 支持其他运算符,如 is 和 typeof。它还引入了某些逻辑运算符的不同功能。 & 运算符
| 运算符
^ 运算符
is
typeOf
关键字 extern 的使用。 extern
关键字 static 的使用。 static
在构造基类上替代 C++ 初始化列表的方法。 请参见 virtual 的示例
C# 程序的常规结构:命名空间、类、结构、委托和枚举。 C# 程序的常规结构
Main 方法和 C++ 中的 main 函数的声明方式不同。另外,比较每种语言的命令行参数的使用。 Main
方法参数:C# 支持 ref 和 out 参数,这两个参数取代指针通过引用传递参数。 ref
out
在 C# 中只在不安全模式下才使用指针。 unsafe
在 C# 中以不同的方式执行重载运算符。 C# 运算符
字符串:C# 字符串不同于 C++ 字符串。 string
foreach 关键字使您得以循环访问数组和集合。 foreach, in
C# 中没有全局方法和全局变量:方法和变量必须包含在类型声明(如 class 或 struct)中。 C# 程序的常规结构
C# 中没有头文件和 #include 指令:using 指令用于引用其他未完全限定类型名的命名空间中的类型。 using
C# 中的局部变量在初始化前不能使用。 5. 变量
析构函数:在 C# 中,不能控制析构函数的调用时间,原因是析构函数由垃圾回收器自动调用。 析构函数
构造函数:与 C++ 类似,如果在 C# 中没有提供类构造函数,则为您自动生成默认构造函数。该默认构造函数将所有字段初始化为它们的默认值。 实例构造函数
默认值表
C# 不支持位域。 C++ 位域
C# 的输入/输出服务和格式设置依赖于 .NET Framework 的运行时库。 C# 语言教程
格式化数值结果表
在 C# 中,方法参数不能有默认值。如果要获得同样的效果,请使用方法重载。 编译器错误 CS0241
http://msdn.microsoft.com/zh-cn/library/aa287549(VS.71).aspx
C++ 和 C# 之间的比较
下表包含 C++ 和 C# 功能之间的重要比较。如果您是一位 C++ 程序员,此表将为您提供这两种语言的最重要差异。有关详细信息,请使用链接浏览详细的主题。
注意 C++ 和 C# 项目派生于不同的项目模型。有关 C++ 和 C# 项目之间差异的信息,请参见项目中的项管理和使用解决方案资源管理器。
功能 参考主题
继承:类只能继承一个基类中的实现。另外,类或接口可以实现多个接口。 class
interface
数组:声明 C# 数组和声明 C++ 数组的语法不同。在 C# 中,“[]”标记出现在数组类型的后面。 数组
bool 类型:bool 类型和其他类型(特别是 int)之间没有转换。 bool
long 类型:在 C# 中,long 数据类型为 64 位,而在 C++ 中为 32 位。 long
struct 类型:在 C# 中,类和结构在语义上不同。struct 是值类型,而 class 是引用类型。 struct
class
switch 语句:与 C++ 中的 switch 语句不同,C# 不支持从一个 case 标签贯穿到另一个 case 标签。 switch
delegate 类型:委托与 C++ 中的函数指针基本相似,但前者具有类型安全,是安全的。 delegate
从派生类调用重写基类成员。 base
请参见 override 的示例
使用 new 修饰符显式隐藏继承成员。 new
声明重写方法需要有 override 关键字。 override
预处理器指令用于条件编译。C# 中不使用头文件。 C# 预处理器指令
异常处理:使用 finally 语句。 try-finally
try-catch-finally
C# 运算符:C# 支持其他运算符,如 is 和 typeof。它还引入了某些逻辑运算符的不同功能。 & 运算符
| 运算符
^ 运算符
is
typeOf
关键字 extern 的使用。 extern
关键字 static 的使用。 static
在构造基类上替代 C++ 初始化列表的方法。 请参见 virtual 的示例
C# 程序的常规结构:命名空间、类、结构、委托和枚举。 C# 程序的常规结构
Main 方法和 C++ 中的 main 函数的声明方式不同。另外,比较每种语言的命令行参数的使用。 Main
方法参数:C# 支持 ref 和 out 参数,这两个参数取代指针通过引用传递参数。 ref
out
在 C# 中只在不安全模式下才使用指针。 unsafe
在 C# 中以不同的方式执行重载运算符。 C# 运算符
字符串:C# 字符串不同于 C++ 字符串。 string
foreach 关键字使您得以循环访问数组和集合。 foreach, in
C# 中没有全局方法和全局变量:方法和变量必须包含在类型声明(如 class 或 struct)中。 C# 程序的常规结构
C# 中没有头文件和 #include 指令:using 指令用于引用其他未完全限定类型名的命名空间中的类型。 using
C# 中的局部变量在初始化前不能使用。 5. 变量
析构函数:在 C# 中,不能控制析构函数的调用时间,原因是析构函数由垃圾回收器自动调用。 析构函数
构造函数:与 C++ 类似,如果在 C# 中没有提供类构造函数,则为您自动生成默认构造函数。该默认构造函数将所有字段初始化为它们的默认值。 实例构造函数
默认值表
C# 不支持位域。 C++ 位域
C# 的输入/输出服务和格式设置依赖于 .NET Framework 的运行时库。 C# 语言教程
格式化数值结果表
在 C# 中,方法参数不能有默认值。如果要获得同样的效果,请使用方法重载。 编译器错误 CS0241
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
c,c++,
是一种低级与高级之间的一种语言,要求懂硬件,c#完全是一种高级语言,支持框架编程,是一种高效的语言
C时最初的版本,然后是C++是C的加强版吧,C#是更高级的版本,C和C#都增加了很多的功能
C
面向过程
C语言是目前世界上流行、使用非常广泛的高级程序设计语言。
C语言对操作系统和系统使用程序以及需要对硬件进行操作的场合,用C语言明显优于其它高级语言,许多大型应用软件都是用C语言编写的。
C语言具有绘图能力强,可移植性,并具备很强的数据处理能力,因此适于编写系统软件,三维,二维图形和动画它是数值计算的高级语言。c++是面向对象的,C是是面向过程的。
先学C语言
是一种低级与高级之间的一种语言,要求懂硬件,c#完全是一种高级语言,支持框架编程,是一种高效的语言
C时最初的版本,然后是C++是C的加强版吧,C#是更高级的版本,C和C#都增加了很多的功能
C
面向过程
C语言是目前世界上流行、使用非常广泛的高级程序设计语言。
C语言对操作系统和系统使用程序以及需要对硬件进行操作的场合,用C语言明显优于其它高级语言,许多大型应用软件都是用C语言编写的。
C语言具有绘图能力强,可移植性,并具备很强的数据处理能力,因此适于编写系统软件,三维,二维图形和动画它是数值计算的高级语言。c++是面向对象的,C是是面向过程的。
先学C语言
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
呵呵。楼上两位哥们都很有想法。
c是面向过程的语言,是一种偏向低级语言的高级语言,功能强大,很多系统和系统软件就是用c编写的。面向对象编程是现在程序设计的主流,c++和C#就是面想对象编程的。都是以c为基础的,跟c语法很像,c++就是带类的c。与c是兼容的。所有的c都可以当c++用。而c#则是微软开发的。只能在windows平台使用,类似c++,但我觉得其语法更接近java。
c是面向过程的语言,是一种偏向低级语言的高级语言,功能强大,很多系统和系统软件就是用c编写的。面向对象编程是现在程序设计的主流,c++和C#就是面想对象编程的。都是以c为基础的,跟c语法很像,c++就是带类的c。与c是兼容的。所有的c都可以当c++用。而c#则是微软开发的。只能在windows平台使用,类似c++,但我觉得其语法更接近java。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
C#是.net,语法基本相同,但是C#没有指针
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询