C 类和对象-文档资料
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
};
class Date // date.h类的定义 { int year,month,day; public: Date(int y,int m,int d); void setYear(int y) ; void setMonth(int m) ; void setDay(int d) ; int getYear( ); int getMonth( ); int getDay( ); };
来自百度文库
析构函数
函数名与类名相同,前有~
没有参数,没有返回值
在类对象生命期结束时,系统自动调用
一个类只可定义一个析构函数,也可以不定义
如果在类的对象中分配有动态内存(如:用new申
请分配的内容)时,就必须为该类提供适当的析构
函数,完成清理工作
this指针
谁的成员?
Date c1,c2;
C++中,类定义包括类说明和类实现两大部分。
说明部分提供了对该类所有数据成员和成员函数
的描述,而实现部分提供了所有成员函数的实现
代码。
类的定义
***.h
class 类名 { 数据成员的说明 public: 方法成员的说明
};
说明:
类名由用户自己定,一般首字母大写 默认是private,只有类中的成员函数才能访问 注意:类定义的末尾有一分号 注意:不能在类定义中对数据成员进行初始化 class Location{ int x=25,y; //ERROR
{类体 }
class Date { int year,month,day; public: Date(int y,int m,int d); void setYear(int y) ; void setMonth(int m) ; void setDay(int d) ; int getYear( ); int getMonth( ); int getDay( ) {return day;} //内联函数 };
CRation::CRation( long n, long d ) { // 对象创建时被调用 this->n = n; // this是指向当前对象的指针 this->d = d; }
void CRation::Print( void ) { cout << n << "/" << d << endl; }
成员函数的定义
1、将成员函数的定义直接写在类中
适合于成员函数规模较小的情况(内联函数)
2、在类的定义体中只写出成员函数的原型说明,而成员函数的 定义之后再写
通常将类的定义写在一个头文件(.h文件)中,成员函数 的定义写在一个程序文件(.cpp文件)中
一般形式:
返回类型 类名::成员函数名(参数说明)
} int Date::getDay( ) { return day; }
void Date::setYear(int y ) {
year=y; } void Date::setMonth(int m ) { month=m; } void Date::setDay(int d ) { day=d; }
//exam.cpp Date类的测试程序
#include <iostream.h> #include "date.h" void main() { Date k(2000,12,1); cout<<k.getMonth()<<endl; }
对象创建时,为数据成员分配存储空间
调用类的构造函数
将分析、设计的系统和程序都抽象为对象组成的模型
面向对象方法
面向对象程序设计
运行中程序实例 = 若干对象实例 + 交互控制 程序 = 若干对象类(用于描述各种对象) 对象类 = 程序模块 C++程序 = 主函数(main) + 若干类定义
类
C++的类是把各种不同类型的数据(称为数据成 员)和对数据的操作(成员函数)组织在一起而 形成的用户自定义的数据类型。
int Date::getYear( ) {
return year; //c1 ?
}
C2?
this指针
C++的非静态成员函数有一个隐含参数
X *const this
int Date::getYear(Date *const this)
{
return this-> year;
}
c1.getYear(&c1);
//date.cpp 实现部分
#include "date.h" Date:: Date(int y,int m,int d) { year=y;month=m;day=d;
}
int Date::getYear( ) {
return year;
}
int Date::getMonth( ) {
return month;
对象生命周期结束时,调用类的析构函数
构造函数
是一种特殊的成员函数,函数名与类名相同
当定义该类的对象时,构造函数将被自动调用以实 现对该对象的初始化
构造函数不能有返回值,因而不能指定包括void在 内的任何返回值类型 构造函数既可定义带参,也可义不带参
一个类可定义多个构造函数,也可以不定义构造函 数,没定义构造函数时,则自动建立一个空的不带 参构造函数(默认构造函数)
第二章 类和对象
C++语言是C的扩充
扩充 C 语言 C++ 语言
支持面向对象程序设计 类定义 消息传递(类似函数调用) 继承、虚函数
扩充的目的:
扩充的功能:
对象与封装
对象 相对独立的实体
具有表示其状态、特征的属性 具有表示其行为、功能的操作 封装性:只有自身操作可访问对象属性
void CRation::Gcd( ) { int x = n, y = d, t; if( x < y ) {t = x; x = y; y = t; } t=x%y; while( t != 0 ) { x = y; y=t; t = x%y; } n /= y; d /= y; }
例:有理数类的定义 #include <iostream.h>
class CRation { long n; // 分子 long d; // 分母 public: CRation( long, long ); // 构造 void Print( ); // 输出 void Gcd( ); // 约分 };