类和对象二-PPT精品文档
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
int Box::volume() {return(height*width*length); } int main() { Box box1; cout<<"The volume of box1 is "<<box1.volume()<<endl; Box box2(15,30,25); cout<<"The volume of box2 is "<<box2.volume()<<endl; return 0; }
3.1 构造函数
在定义类时不能对成员变量
进行初始化,因为无法确定 成员变量属于哪一个对象。
成员变量一般都定义为私有
如何进行成员 变量的初始化?
属性,也不能在声明对象后 利用赋值运算对成员变量进 行初始化。
成员变量的初始化一般是利
用一个名为构造函数的成员 函数来完成。
什么是构造函数:
构造函数是一种特殊的成员函数,它是在 创建对象时(声明或 new 动态创建)系统自动 调用的成员函数。
用带初始化表对数据成员初始化
在函数首部对数据成员进行初始化: Box::Box(int h,int w,int len):height(h),width(w),length(len){ } 表示:用形参h的值初始化数据成员height,用形参 w的值初始化数据成员width,用形参len的值初始化 数据成员length。
如果用户自己没有定义构造函数,则C++ 系统会自动生成一个构造函数,只是这个构 造函数的函数体是空的,也没有参数,不执 行初始化操作。 构造函数不需用户调用,也不能被用户调 用。
带参数的构造函数
构造函数可以带参数,在调用不同对象的构造函数时,从外 面将不同的数据传递给构造函数,以实现不同的初始化。
构造函数中参数的值既可以通过实参传递,
也可以指定为某些默认的值。如果用户不指 定实参值,编译系统就使形参取默认值。
#include <iostream> using namespace std; class Box {public: Box(int=10,int=10,int=10); int volume(); private: int height; int width; int length; }; Box::Box(int h,int w,int len):height(h),width(w),length(len) {} int Box::volume() {return(height*width*length); }
构造函数首部一般格式为:构造函数名(类型1 形参1,类
型2 形参2….);
实参在定义对象时给出,定义对象的一般格式为:
类名 对象名(实参1,实参2,….);
例3.2 有两个长方体,其长宽高为别为:(1)12,20,25;(2)10,14, 20.分别求出它们的体积
#include <iostream> using namespace std; class Box {public: Box(int,int,int); int volume(); private: int height; int width; int length; };
Box::Box(int h,int w,int len) {height=h; width=w; length=len; } int Box::volume() {return(height*width*length); } int main() { Box box1(12,25,30); cout<<"The volume of box1 is "<<box1.volume()<<endl; Box box2(15,30,21); cout<<"The volume of box2 is "<<box2.volume()<<endl; return 0; }
定义成员函数
void Time::set_time() {cin>hour; Cin>>minute; Cin>>sec; } void Time::show_time() {cout<<hour<<“:”<<minute<<“:”<<sec<<endl; }
int main() { Time t1; //建立对象t1,同时调用构造函数t1.Time () t1.set_time(); //对t1的数据成员赋值 t1.show_time(); //显示t1的数据成员的值 time t2(); t2.show_time(); return 0; }
构造函数的重载
在一个类中可以定义多个构造函数,以便 对类对象提供不同的初始化的方法,供用户 选用。这些构造函数具有相同的名字,而参 数的个数或参数类型不同
例 3.3 定义两个构造函数,一个无参数,一个有参数
#include <iostream> using namespace std; class Box {public: Box(); Box(int h,int w ,int len):height(h),width(w),length(len){ } int volume(); private: int height; int width; int length; }; Box::Box() {height=10; width=10; length=10; }
说明:
调用构造函数不必给出实参的构造函数,称为默认 的构造函数。一个类只能数,正确的 格式是:Box box1;而不是:Box box1(); 一个类中可以包含多个构造函数,对每一个对象来 说,建立对象时只执行其中一个构造函数
使用默认参数的构造函数
构造函数的名字必须与类名同名
它不具有任何类型,不返回任何值。
例 为类Time添加构造函数。
#include <iostream.h> class Time{ private: int hour; int minute; int second; public: Time( ){hour=0;minute=0;sec=0;}// 构造函数 void set_time( ); void show_time( ); };