时间:2021-05-19
1、在C#中,class的变量为引用类型,在C++中class的变量为值类型,如myclass mc,在C++中,mc是值类型,成员存储在程序的栈区,在C#中,mc是引用类型,指向堆中的成员。
2、switch语句,C#中case后面可根字符串,如case “abc“,但在C++中却不行,C++中case后面只跟数字,字符,和枚举。
3、在C#中没有C++中的私有继承和保护继承,只有公有继承。
4、C#中可以通过关键字sealed把一个类声明为密封类,即不能被作为父类被继承出派出类,在C++中可通过把构造函数声明为private,让其不能被作为父类被继承出派出类,且同时不能实例化,但可通过类的静态函数调用构造函数来产生实例。
5、C#支持用户自定义类型转换,可通过关键字implicit定义隐式转换,可通过关键字explicit定义显式转换。在C++中,可通过重载 = 操作符来达到隐式转换的目的。
6、在C#中,运算符重载则一定要把运算符重载函数定义为类的成员,且必须用static和public关键字修饰,且对于一元运算符重载,需要一个参数,对于二元运算符重载则需要两个参数。在C++中,运算符重载,有一个默认的隐含参数this,则一元运算符重载无需参数,二元只需一个参数。而且C#中不能重载 = 号运算符。
7、C#的catch语句有一个不带任何参数的一般catch语句,它相当于C++中的catch(...)。
8、C#中用关键字abstract来声明一个类为抽象类,抽象类不能实例化。在C++中通过声明一个纯虚函数来使一个类变成抽象类,同样不能实例化。
9、对于结构类型,即用关键字struct定义的数据结构,在C++中它与class的用法和功能相近,只是用class定义默认成员的访问权限是私有的,而stract默认成员的访问权限是公有的。而C#中class的变量是引用类型,而struct定义的变量则是值类型,成员的访问权限与class一样。注意,C#中结构不允许有析构函数。
10、对于结构类型,预定义的无参数构造函数对每个结构都存在,不能删除或重定义它,可以重载构造函数,但必须带有参数。
11、在C#中数组是对象,继承于System.Array,拥有一定的操作方法,并且数据是引用类型,引用在栈或堆上,而数组对象本身则在堆中。C++中数组只是数据或类的对象的一个集合,数组本身并不是对象,但数组中的元素可以是对象,数组本身可在栈中或在堆中。C#并不支持动态数组,而C++则可以通过new动态分配内存,实现动态数组。
12、在C#中存在一种叫接口的数据类型,它是一组函数的声明并没有实现函数的引用类型,不能实例化,只有类才能实现接口,实现接口必须实现接口中的所有声明的函数。在C++中虽然没有这种默认数据类型,但是在C++中可以自己创建一个接口类型,就是把里面的函数全部声明纯虚函数,并不含数据成员,来实现相同的功能。
13、C#中一个类可以实现多个接口,各个接口必须以‘,'分隔,如果还有基类,则基类必须写在最前面,如果多个接口中有多个相同的签名和返回类型的接口成员,类则可以实现单个成员来满足所有包含重复成员的接口。这是C#中的默认方式,也可以用点运算符来指定实现的成员所属的接口。这与C++中的多继承而产生的歧义问题相似,它并不提供这种默认的机制,在C++中则是相对自由的,你可以通过域运算符来指明你所调用的是哪个基类的成员,或是你实现的是哪个基类的成员。若你只想你的派生类对同一签名的函数或成员只有一份实现,则可以使用虚继承的方法来实现。
14、在C#中类只能单继承不能实现多继承,而对于接口,接口可以实现单继承和多继承,而实现它的类必须对接口继承体系中所有的接口成员提供实现。
15、在C#中存在叫装箱和拆箱的转换,为什么会有这两种转换,是因为C#中的变量数据有的保存在堆中(引用类型),有的则保存在栈中(值类型),当要把值类型赋给引用类型时,就要把值类型装箱,反之则需要拆箱。而且拆箱是显式转换。装箱之后,引用类型在堆中保存的值是原值类型的一个副本。在C++中则不存在这样的问题,因为变量数据默认是保存在栈中的,若要保存在堆中则需要用到指针,要赋值则需要p->data = data或(*p).data = data。也可以通过重载‘='运算符来达到隐式转换的效果。
16、在C#的泛型编程中,可用关键字where来对类型参数进行约束,例如class myclass<T1, T2, T3> where T2:cls2 where T3:In3。则只有cls2类型或其派生类型才能作为T2的实参,而只有In3接口类型才能作为T3的实参。这与C++中泛型编程中的模板特化和模板偏特化相似,在C++中可以用这样的形式实现相似的功能,class myclass<T1, cls, In3>。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
现在比较流行C#与C++融合:C#做GUI,开发效率高,C++做运算,运行效率高,二者兼得。但是C++与C#必然存在数据交互,C#与C++dll的数据交互从来都
C#与Java相比较从整体上来看,c#和java及其相似,甚至超过了c#与c、c++的相似程度,下面是两种语言的比较。两者都能编译成跨平台,跨语言的代码,而且代
本文详细叙述了C/C++的位操作,这是C/C++程序设计中非常重要的概念。本文实例对于C/C++初学者来说也具有很好的复习与参考价值。具体分析如下:C/C++对
最近研究C#相关的OCR技术,图像识别一般C和C++这种底层语言做的比较多,C#主要是依托一些封装好的组件进行调用,这里介绍一种身份证识别的方法。环境搭建下载地
C++与C#有些致命的区别,如果不注意,很可能导致一些莫名其妙的bug。引用类型就是其中一个。C#中,引用跟指针比较接近,除了值类型(int,float,str