- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
面向对象技术与C7.doc
十.类的语言基础
类的声明
基本语法
类在编程书写时用一个“class”的保留字来表示,类的名称惯用 大写字母开头,C与C#语言的定义格式是:
class笑名{成员名字定义表};
C++语言对己定义的类的引用声明格式是: class已定义的类名;
C++与C#语言的对象定义格式是:
已定义的类名对象名表;
例h
class A{...};
class B;//仅适用于C++语言 A a,b;
class的内部语法结构
根据对象的抽象结构和对外所呈现的访问权限的定义,C+4?语言
将class的内部分成了三个区域: public:
成员声明表区 private:
成员声明表区 protected:
成员声明表区
? C#语言的class内的成员依靠附加类型的说明得到如同C++语言的
三个声明区的访问权限。它们分别是:public、private和protected。
class内的成员分为成员数据和成员函数两个部分,可以出现在上述
三个声明表区中的任何一个;
例2: C++语目
C#语言
class A
class A
{
{
private:
private int i;
inti;
public void init(int x){i=x;}
public:
static void Main(){}
int init(int);
public区域对应于对象模型的方法部分,但并不只放成员函数;
private区域对位于对象模型的属性部分,除本类对象以外的其它对 象与过程都不能直接访问(如下图所示);
? protected区与派也有关,以后再议;
?在一个class的内部可以选择使用上述三个区域的划分,但private 是缺省的。
例3:
class A
inti;
public:
int init(int);
};
?编写吾言的class内部的成员吋推荐只写声明,成员函数的代 码定义可通过作用域符号(::)置于class之外,以使class更为好读。 在C#语言中声明与定义是一体化,也就无法将成员的声明与定义分 离了;
例4:
class A {
inti;
public:
void init(int);
};
int A::init(int x){i=x;}
? C++和c#语言中的消息格式与c语言中对结构实例的引用非常相 似;
例5:
例5: C++语言
#includeiostream using namespace std; class A
{
private: int i;
public:
int init(int);
};
int A::init(int x){return i=x;} void main()
C#语言
using System;
class A
{
int i;
public void init(int x){i=x;} public int get(){return i;} static void Main()
{
Aa=new A();//对象引用 a.init(O);
Console.Write(a.get());
A a;
cout?a.init(0);
}
C#语言除丫 public、private和protected的概念与C++语言的同名 分区保留字基本相同以外(C#语言的public还允许其它工程访问), 还另外定义了专门用于确定自身访问目的新保留字internal。该保留 字作为成员数据的附加类别示意编译器只允许本工程或指定工程内 的对象访问该成员数据。
类中成员数据的初始化
①构造函数(Constructorfunction)与析构函数(Deconstructor
①构造函数(Constructor
function)
在对象生成的同时被用来为对象动态地开辟内存空间并对对象 的成员数据进行初始化的专用函数称为构造函数。在对象撤消的同时 被用来释放对象初始时的内存空间的专用函数称为析构函数。
?构造函数名与类名相同且不得使用任何返回值类型声明;
?无任何参数的构造函数又称为缺省构造函数;
?构造函数不显性的写出时会巾编译器强制插入一个缺省构造函数;
?每当构造函数被执行一次便会生成一个对象;
?隐式声明的缺省构造函数是公开的内联函数(仅适用于C++语言); ?当一个类中含存多个秉载的构造函数时,对象定义的格式将是对其 引用的区别标志;
例
例6:
class Aint i; public:A(){i=O;} A(int x){i=x;}
class A
int i; public:
A(){i=O;} A(int x){i=x;}
};
void main() {Aa,b(0);}
int i;
A(){i:0;}
A(int x){i=x;} static void M
原创力文档


文档评论(0)