- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
类与对象 类的声明与对象的定义 构造函数与析构函数 this指针 静态成员 友元 8.1 类的声明与对象的定义 类的声明 类是具有相同属性和行为的一类对象的封装体。 (1) 从侧重于类的属性和行为来描述类 class 类名 { 数据成员声明部分 //反映同类对象的静态属性 成员函数声明部分 //反映同类对象的动态行为 } ; (2) 从侧重于类的封装特性来描述类 class 类名 { public: 成员表 private: 成员表 protected: 成员表 } ; 类的成员包括数据和函数,分别用以说明该类对象的静态属性和动态行为。它们被声明在类中,并被设置了相应的访问属性。它们被分别称为数据成员和成员函数,以区别于类外定义的普通变量和函数。 class Person //声明一个类,类名为Person { private: //说明以下成员为私有(数据)成员 int number; //编号 char name[20]; //姓名 char sex; //性别 int age; //年龄 public: //说明以下成员为公有成员(函数) void setInfo(int number,char name[],char sex,int age); //设置人员信息 void show(); //输出显示人员信息 } ; 类的说明: (1) 类声明中的“成员表”是由该类的数据成员和成员函数的声明(定义)所组成。 (2) 类声明中,由public引出的是公有成员,允许在该类以外对其访问;private引出私有成员,只允许该类中的成员函数访问;protected引出保护成员,只允许该类及其派生类的成员函数对其访问。 为了实现既要隐藏数据又要为外界使用数据提供接口的封装目的,通常是将类中的数据成员声明为私有的,而将部分成员函数声明为公有的。protected的意义则体现在类的继承与派生关系中,将在第9章中再对其进行讨论。 (3) public、private和protected关键字可以按任意顺序出现任意次。但为了程序结构的清晰,应该把所有的私有成员和公有成员归类放在一起。若是在类体的开头声明私有成员,则还可以省略关键字private。 (4) 类中的任何数据成员都不得用extern、auto、register进行修饰。 (5) 不能在类的声明中给数据成员赋初值(初始化),例如: class base { int a=1; //错误,a是数据成员 public: int m_fun { int x=1; //正确,x是函数中定义的一个局部变量 } }; 数据成员的初始化要由构造函数实现。 (6) 在类声明中,注意花括号外面的分号不能少,因为它是一个类类型的声明语句。 (7) 成员函数可以重载。例如,在Person类中,如果要实现信息输出格式的多种化,可以再声明一个带参数的show()函数:void show(int n) ; (8) 仅从C++数据类型的角度看,类是C++的一种构造数据类型,但它与其它构造类型在程序思想上却有非常大的差异。其它各类数据类型反映的是程序的数据结构,类反映的则是面向对象的程序架构。 (9) 函数和类都是构建C++面向对象程序的主要部件(或称为模块、封装体),但它们属于两个不同层次的封装体:函数是一个过程处理代码的功能模块封装体;类是具有相同属性和行为的一类对象的封装体,是组成面向对象程序的基本模块。 成员函数的定义 前面声明的Person类和Date类,在其类体中只声明了成员函数,还没有具体实现(定义)成员函数。成员函数的定义可以直接在类体中完成,也可以在类体的外面实现。 功能简单的成员函数可以直接定义在类体中,这时它自动成为内联函数。其定义的方法与一般函数相同,只是作为成员函数,在函数体中的具体语句主要是针对类的数据成员所进行的操作。 在Person类的声明中,可以直接在类体中定义各个成员函数。 class Person { private: int number; char name[20]; char sex; int age; public: void setInfo(int bh,char xm[],char xb,int nl) //形参名使用汉语拼音 { number=bh; strcpy(name,xm); sex=xb; age=nl; } void
文档评论(0)