- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
visual C++类和对象专题讲解.doc
类和对象
要求掌握:
C++怎样构造类和使用类
构造函数和析构函数
对象的指针
本章主要内容
?类的定义
?成员函数的定义
?对象的定义
?构造函数与析构函数
?C++的封装性
?实例分析
§ 3.1 类和对象的基本概念
3.1.1 C++类的构成
类是一种将数据和操作合并为单一结构的类型定义。
用方程式表示:
类 = 数据 + 操作(函数)
C++类的构成包括类的声明、类的定义两个部分。
类的声明
类的声明包括:类的成员声明和类成员的访问控制声明。
形式:
class 类名
{ private:
私有数据和函数 只能由public中的函数使用
protected:
保护数据和函数
保护成员被该类和它的派生类访问
public:
公共数据和函数 可供用户使用
};
如:
class CTime
{
private:
int hour;
int minute;
int second;
public:
void SetTime(int h, int m,int s);
int GetHour() {return hour;}
int GetMinute() {return minute;}
int GetSecond() {return second;}
};
类是由数据和函数构成,它们称为类的成员。
公有成员 在关键字public后面声明,它们是类与外部的接口,任何外部函数都可以访问公有类型数据和函数。
class A{
int x;
public:
int y;
void SetXY(int,int);
};
void A::SetXY(int a,int b)
{ x = a;
y = b;
}
void main()
{
A as ;
as.SetXY(5,5); //Ok
as.y=5; //Ok
}
私有成员
在关键字private后面声明,只允许本类中的函数访问,而类外部的任何函数都不能访问。
如果紧跟在类名称的后面声明私有成员,则关键字private可以省略。
class A{
int x;
public:
int y;
void SetXY(int,int);
};
void A::SetXY(int a,int b)
{ x = a;
y = b;
}
void main()
{
A as ;
as.SetXY(5,5); //Ok
as.x=5; //Error
}
Note:
类名后面的{ }表示类的声明范围,最后的分号表示类声明的结束。
建议把所有的私有成员和公有成员归类放在一起,并将私有成员放在公有成员的前面。
数据成员可以是任意数据类型,但不能用auto 、register或 extern进行说明。
例:
class abcd
{
auto a; // 非法
register b; // 非法
extern c; // 非法
int d;
public:
int get(d);
};
不能在类的声明中给类的数据成员赋初值;在类对象定义之后才能给数据成员赋初值。
例:
class abc
{
char a=’q’; // 非法
int b=33; // 非法
public:
int get(b);
};
二、成员函数的定义(类的定义)
C++提供两种方式定义成员函数,类中的成员函数的定义既可放在类中,也可放在类的外面。
第一种方式:在类的声明中,只给出成员函数的原型(用现代风格说明);而成员函数的定义放在类体的外部,称为外联函数。
成员函数的定义放在外面,需在函数名前面加上类名和作用域区分符“::”。成员函数体在类的外部定义。
其形式为:
返回类型 类名 :: 函数名(参数表){
// 函数体
}
class CTime {
private:
int hour;
int minute;
int second;
public:
void SetTime(int h, int m,int s);
int GetHour() {return hour;}
int GetMinute() {return
文档评论(0)