十二.类的语言基础.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
十二.类的语言基础

PAGE 1 PAGE 15 十二.类的语言基础 ⒈类的声明 ①基本语法 类在编程书写时用一个“class”的保留字来表示,类的名称惯用大写字母开头,其声明格式是: class类名{成员名字定义表}; 引用声明格式是: class已声明的类名; 定义格式是: 已声明的类名 对象名表; 例: class A{…}; class B; A a,b; ②class的内部语法结构 根据对象的抽象结构和对外所呈现的访问权限的定义,C++语言将class的内部分成了三个区域: public: 成员声明表区 private: 成员声明表区 protected: 成员声明表区 ·class内的成员分为成员数据和成员函数两个部分,可以出现在上述三个声明表区中的任何一个; 例: class A { private: int i; public: int init(int); }; ·public区域对应于对象模型的方法部分,但并不只放成员函数; ·private区域对应于对象模型的属性部分,除本类对象以外的其它都不能直接访问(如下图所示); ·protected区与派生有关,以后再议; ·在一个class的内部可以选择使用上述三个区域的划分,但private是缺省的。 例: class A { int i; public: int init(int); }; ·class内部的成员原则上只写声明,成员函数的定义可通过作用域符号(::)置于class之外; 例: class A { int i; public: void init(int); }; int A::init(int x){i=x;} ·C++语言中的消息格式与C语言中对结构实例的引用非常相似; 例: class A { private: int i; public: int init(int); }; int A::init(int x){return i=x;} void main() { A a; couta.init(0); } ⒉类中成员数据的初始化 构造函数(Constructor function)与析构函数(Deconstructor function) 在对象生成的同时被用来为对象动态地开辟内存空间并对对象的成员数据进行初始化的专用函数称为构造函数。在对象撤消的同时被用来释放对象初始时的内存空间的专用函数称为析构函数。 ·构造函数名与类名相同且不得使用任何返回值类型声明; ·构造函数即使不显性的写出也会由编译器自动插入; ·构造函数仅在一个对象生成时被执行一次且仅一次; ·构造函数也是必然的内联函数; ·无任何参数的构造函数又称为缺省构造函数; ·当一个类中有多个重载的构造函数时,对象定义的格式将是对其引用的区别标志; 例: Class A { int i; public: A(){i=0;} A(int x){i=x;} }; void main() {A a,b(0);} ·析构函数的格式要求与构造函数相同,只是在名字的前方附加“~”; ·析构函数仅在一个对象撤消时被执行一次且仅一次; ·一个类中有且仅有一个析构函数(意即:不得使用任何参数且没有重载的性能); ·析构函数只能释放一个对象生成时所获得的动态内存空间; 例: Class A { int *p; public: A(){} A(int x){p=new int[x];} ~A(){delete p;} }; void main() {A a,b(10);} ②成员初始化表( Member Initiation Table) ·成员初始化表位于构造函数的声明体与定义体之间并用冒号连接; ·成员初始化表专门用来对对象内仅需进行一次初始化的成员数据进行初始化(包括常量、引用和基类的成员数据),也可以对其它的成员数据进行初始化; ·成员初始化表的基本格式为: 成员数据名1(参数名1),……成员数据名n(参数名n) 例: class A { const int c; int j; public: A(int x):c(x),j(c){} }; ③拷贝型构造函数 与一般成员数据的初始化相比,对象中指针成员数据的初始化要考虑的内容要复杂一些。当对象中指针成员值要指向对象以外的位置时就必须使用拷贝型构造函数来(复制)初始化。拷贝型构造函数的通用声明格式如下: 构造函数名(同类数据类型 指针名); 构造函数名(同类数据类型 引用名); 例1: #includestring.h class A { char* p; A p2; public: A(char *s) { p=new char[strlen(s

文档评论(0)

ldj215323 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档