c#与c++
来源:互联网 发布:au软件怎么用 编辑:程序博客网 时间:2024/06/06 06:55
c#开发出来的都是托管的,只能在.net环境中运行。
c++可以开发本地代码,不需要.net运行环境。
c#为单根继承,所有的对象都从Object继承过来,不允许类的多继承,但可以继承多个接口
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的转变对开发者来说可能是痛苦的(因为要学习很多新的东西),但也充满了机会。
学习C#也有一段时间了,简单来总结一下C++与C#之间的区别,为更多的C++程序员转到C#阵营来,我整理了我自己的思绪,把我的一些心得体会写下来,以便大家可以更高效率地学习C#,高手见了勿见笑~
1,C#不支持多重继承,这是与C++明显区别的地方,说真的多重继承有时候用起来挺麻烦的,可能微软怕你用不好吧,不给你提供了,但我个人觉得没有了多重继承感觉有点可惜。
2.在标准的C#安全代码中不支持指针类型的操作,然而,你却能在微软所谓的“非安全代码”中操作指针类型对象。
3.C#中所有对象都只能通过关键词“new”来创建,C++的“类名_对象名”方式在C#中变为声明一个引用。呵呵,万物皆对象,连常见的数据类型都变为对象了,JAVA味道很浓。
4.数组变为了类,因此对于数组里的元素,.NET Framework直接提供了一系列的操作:查找、排序、倒置……
5.在C#里面,数组的元素都是存放在托管堆里面,比起C++的在内存里不确定位置申请一块连续空间要安全得多。
6,C++的switch后跟参数必须是int型,而C#却允许string型,这点改进觉得真的是比以前方便多了!
7.C#会禁止所有switch..case语句的失败情形,除非case语句后是空格,否则执行了前一个case语句就算没有break也会停止执行后面的case语句。
8.在异常处理上,C++允许抛出任何类型,而C#中规定抛出类型为一个派生于System.Exception的对象。
9.C++的宏在C#中被抛弃了很多,而且也不建议使用,因此很少见。
10.C++的模板在C#里没有了,但在C#中我们找到了能完成模板任务的更锋利的武器:委托。
11.C++的全局变量这一概念没有了,C#和JAVA类似,要把所有东西都放在类里面,还建议使用命名空间包含起来。
12.C#可以在定义类的时候直接给属性赋值,而C++这么做却会编译出错。
13.C#里有静态构造函数一个概念,这个构造函数只执行一次,因此能够保证一些静态成员只被初始化一遍。
14.C#有自动垃圾收集机制,防止内存泄露,把C++程序员从繁重的内存管理上解放出来。
15.更强的类型转换保护机制,比如说把float转成uint,直接转换0.35会变成0.34,是因为二进制无法表示这样的数字,使用System.Conver里的方法,可以安全地把类型安全转换过来。
16.委托与事件、装箱与取消装箱、Web Services……一大堆C++没有的新东西,我感觉是做大型项目方便了管理,也容易扩充,但做起小型项目,由于是编译成IL代码的,运行需要.NET Framework SDK支持,效率是个问题,不利于做那些对运算速度和内存消耗要求高的项目。
c++可以开发本地代码,不需要.net运行环境。
c#为单根继承,所有的对象都从Object继承过来,不允许类的多继承,但可以继承多个接口
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的转变对开发者来说可能是痛苦的(因为要学习很多新的东西),但也充满了机会。
学习C#也有一段时间了,简单来总结一下C++与C#之间的区别,为更多的C++程序员转到C#阵营来,我整理了我自己的思绪,把我的一些心得体会写下来,以便大家可以更高效率地学习C#,高手见了勿见笑~
1,C#不支持多重继承,这是与C++明显区别的地方,说真的多重继承有时候用起来挺麻烦的,可能微软怕你用不好吧,不给你提供了,但我个人觉得没有了多重继承感觉有点可惜。
2.在标准的C#安全代码中不支持指针类型的操作,然而,你却能在微软所谓的“非安全代码”中操作指针类型对象。
3.C#中所有对象都只能通过关键词“new”来创建,C++的“类名_对象名”方式在C#中变为声明一个引用。呵呵,万物皆对象,连常见的数据类型都变为对象了,JAVA味道很浓。
4.数组变为了类,因此对于数组里的元素,.NET Framework直接提供了一系列的操作:查找、排序、倒置……
5.在C#里面,数组的元素都是存放在托管堆里面,比起C++的在内存里不确定位置申请一块连续空间要安全得多。
6,C++的switch后跟参数必须是int型,而C#却允许string型,这点改进觉得真的是比以前方便多了!
7.C#会禁止所有switch..case语句的失败情形,除非case语句后是空格,否则执行了前一个case语句就算没有break也会停止执行后面的case语句。
8.在异常处理上,C++允许抛出任何类型,而C#中规定抛出类型为一个派生于System.Exception的对象。
9.C++的宏在C#中被抛弃了很多,而且也不建议使用,因此很少见。
10.C++的模板在C#里没有了,但在C#中我们找到了能完成模板任务的更锋利的武器:委托。
11.C++的全局变量这一概念没有了,C#和JAVA类似,要把所有东西都放在类里面,还建议使用命名空间包含起来。
12.C#可以在定义类的时候直接给属性赋值,而C++这么做却会编译出错。
13.C#里有静态构造函数一个概念,这个构造函数只执行一次,因此能够保证一些静态成员只被初始化一遍。
14.C#有自动垃圾收集机制,防止内存泄露,把C++程序员从繁重的内存管理上解放出来。
15.更强的类型转换保护机制,比如说把float转成uint,直接转换0.35会变成0.34,是因为二进制无法表示这样的数字,使用System.Conver里的方法,可以安全地把类型安全转换过来。
16.委托与事件、装箱与取消装箱、Web Services……一大堆C++没有的新东西,我感觉是做大型项目方便了管理,也容易扩充,但做起小型项目,由于是编译成IL代码的,运行需要.NET Framework SDK支持,效率是个问题,不利于做那些对运算速度和内存消耗要求高的项目。
0 0
- C,C#与C++
- C C++与C#
- c与c#
- C#与C
- C与C#混合编程
- C与C#的区别
- C与C#的区别
- C, C++,C#的区别与联系
- C#与C++、Java之比较概览
- C#与C++、Java之比较概览
- C# 与 C 和 C++ 比较
- C#与C++、JAVA的区别
- c#与c、java的关系
- C#与C/C++数据类型对应关系
- C#与C/C++类型对照表
- C/C++ 与 C#混合编程
- PC使用C#与1214C通信
- C#与C++/CLI混合编程
- 算法笔记十:计算第I大的数
- 重力效果
- VC++中如何获得一个当前进程的运行目录
- 【PCB设计】PCB改版
- LeetCode——Anagrams
- c#与c++
- 第12周 项目3-2 奇数的奇数阶乘
- 树目录
- ExtJS001
- socket异常及原因分析
- 《精通Linux设备驱动程序开发》——PCI
- leetcode:Binary Tree Postorder Traversal
- 一个简单的Php服务端
- spring tool suite juno 创建spring mvc 项目及遇到无法把maven依赖jar包发布到服务器下解决