- 1、本文档共17页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
对比C和C#的类
对比C++和C#的类
微软公司给C#(读为C-Sharp)赋予C++某些面向对象的本质,比如模板,但改变了类的创建方法。本文,我将对比C++和C#的类,并着重说明微软在C#中类创建和使用方面的改变。
一、简介
面向对象(OO)编程在应用设计中已经发展二十来年了。程序不再是一系列函数的堆彻(象一些范例那样的程序),而是对象的集合,每个对象都有其独特的属性和方法来与其它对象打交道。
C语言系列是面向对象设计发展的最好例子。C++为开发者提供了优秀的面向对象编程工具,程序员可以显式地创建构造函数,拷贝构造函数,重载操作符,使用模板等等。
象C++这样复杂语言的主要问题是程序员要花上好几个月来掌握面向对象设计本质。新程序员必须学会掌握模板,函数重载,当然还要会创建和使用功能良好的类。
微软公司给C#(读为C-Sharp)赋予C++某些面向对象的本质,比如模板,但改变了类的创建方法。本文,我将对比C++和C#的类,并着重说明微软在C#中类创建和使用方面的改变。
本文对象是熟练的C++程序员,通过一些细节来解释C#面向对象的本质。
二、C#的类有了哪些改变?
如你所知,C#是部分基于C++,部分基于Java语法的语言。C#中还有一些细节上的改变,使得它可以用于现代设计。
当你开始用C#建类时就会立即看到这点。让我们通过一个简单的例子开始了解在C++和C#中是如何建类并进行实例化的。
C++版本:
#include iostream
class MyClass
{
public: void doSomething()
{
std::cout This is some text;
}
};
void main()
{
MyClass mc;
mc.doSomething();
}
C# 版本:
using System;
class MyClass
{
public void doSomething()
{
Console.WriteLine(This is some text);
}
}
class EntryPoint
{
public static void Main()
{
MyClass mc = new MyClass();
mc.doSomething();
}
}
上面的代码中有几个不同之处。
首先,C++用#include包含语句来指明包含文件iostream.h的物理路径。C#则告诉编译器程序将在System命名空间下操作,所有的命名空间和类都属于System命名空间。C#通过命名空间的名字来决定程序的作用范围(本例中只有System一个命名空间),而不用指明物理路径的包含文件方法。
其次,C#的主程序用Main(注意M是大写)。
第三,C++的类声明结束后要在最后的大括号后面用分号结尾。C#则可用可不用,往往都是省略。
第四,你能看到在C#中必须显式地声明方法和成员的作用域。若不加声明,缺省为私有(只有类成员可以访问),这点与C++一样。C#中有5种作用域:
公有(public):其他类成员也可以访问
私有(private):只有类成员才能访问
保护(protected):类成员和继承类成员可以访问
内部(internal):只有汇编里的成员才能访问(C#的汇编是代码和资源数据的结合,以asmx作文件后缀)
内部保护(protected internal):类成员和继承类成员可以访问
最后,与Java一样,C#的方法也可以声明为静态(static)的。静态变量的使用在C#和C++是一样的。在C#里,可以这样创建并调用类的静态方法:
using System;
class MyClass
{
public static void doSomething()
{
Console.WriteLine(This is some text);
}
};
class EntryPoint
{
public static void Main()
{
MyClass.doSomething();
}
}
注意,这里直接使用类声明而没有创建类的实例。这是为C#语言增加的非常便利的使用方法,可以节省我们的时间和内存。就是说,不要创建类实例,可以直接调用类的方法。
三、用类修饰语限制对类的访问
以前只能对类成员和类方法设定限制,但不能对类实体作限制。C#可以通过声明类修饰语来对类的实例实行限制,如上节提到的作用域。
C++不能对整个类作限制。看一下C++的类声明:
class Car
{
public:
您可能关注的文档
- 大学英语1-10章在线测试答案.doc
- 大学英语三级词汇txt.doc
- 大学英语六级必考500词.doc
- 大学英语六级核心词汇总结.doc
- 大学英语六级考试大纲.doc
- 大学英语六级精选词汇.doc
- 大学英语六级考试阅读必背词汇.doc
- 大学英语5单词表.doc
- 大学英语单词生词汇总一.doc
- 大学英语四级-考前强化必备1500词.doc
- 赢在起跑线:市场营销-精准定位,巧妙传播.pptx
- 2024年生殖健康咨询师考前冲刺练习题(A卷)附答案详解.docx
- 2024年生殖健康咨询师考前冲刺练习题含答案详解(能力提升).docx
- 2024年生殖健康咨询师考前冲刺试卷附参考答案详解(能力提升).docx
- 2024年生殖健康咨询师考试历年机考真题集【夺冠系列】附答案详解.docx
- 2024年生殖健康咨询师考前冲刺练习题含完整答案详解【精选题】.docx
- 2024年生殖健康咨询师考前冲刺练习题含答案详解(培优B卷).docx
- 2024年生殖健康咨询师考试综合练习及参考答案详解(新).docx
- 2024年生殖健康咨询师考试综合练习【精练】附答案详解.docx
- 2024年生殖健康咨询师考试综合练习及答案详解(基础+提升).docx
文档评论(0)