预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共81页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

第7章类和对象面向对象程序设计语言(C++)面向对象程序设计语言(C++)面向对象程序设计语言(C++)面向对象程序设计语言(C++)面向对象程序设计语言(C++)面向对象程序设计语言(C++)面向对象程序设计语言(C++)面向对象程序设计语言(C++)面向对象程序设计语言(C++)面向对象程序设计语言(C++)面向对象程序设计语言(C++)面向对象程序设计语言(C++)面向对象程序设计语言(C++)面向对象程序设计语言(C++)叫一个听听类与结构体类的访问特性类的三种访问权限保护成员classStudentstu1,stu2;{private: ┆ public:┆}对象名;注意2.另一类的对象可以作为该类的成员,但是自身类的对象不可以作为该类的成员,而自身类的指针和引用可以作为该类的成员。思考题在类外定义成员函数inline成员函数成员函数的存储方式引用对象成员的三种方式#include<iostream.h> classPoint { voidoutput(); intx; inty;}; voidmain() { Pointpt; pt.x=5;pt.y=5; pt.output();} voidoutput() {cout<<x<<endl<<y<<endl;} 构造函数构造函数的重载在C++中,允许两个或两个以上的函数采用相同的名字,只要使用不同类型、不同数目的参数或不同的返回值,编译器便知道在什么情况下该调用哪个函数,这就叫函数重载。 如:intmax(intx,inty) {return((x>y)?x:y);} doublemax(doublex,doubley) {return((x>y)?x:y);} #include<iostream.h> voidmain() {cout<<max(10,20)<<endl; cout<<max(1.23,2.34)<<endl;}作为重载函数至少在参数个数、参数类型上有所不同。若仅在返回类型上不同,编译器是无法区别的。 如:voidfunc(int);intfunc(int);//错误 intmin(int,int); intmin(int,int,int);//正确 intadd(int,int); doubleadd(double,double);//正确构造函数的重载用参数初始化表对数据成员初始化使用默认参数的构造函数Box(int=10,int=10,int=10); Box(); Box(int,int); 析构函数练习分析以下程序的错误原因,给出修改方案使之能正确运行调用构造函数和析构函数的顺序对象数组对象数组的初始化思考题:This指针this指针是隐式使用的,它是作为参数被传递给成员函数的。本来,成员函数volume的定义如下: intBox∷volume() {return(height*width*length); } C++把它处理为 intBox∷volume(Box*this) {return(this->height*this->width*this->length); }Date{ private: intyear; intmonth; intday; public: voidsetMonth(intmonth); }myDate.setMonth(3); 可被解释为: setMonth(&myDate,3);对象指针和对象引用作函数参数共用数据的保护常对象常数据成员常成员函数再看函数重载×指向常对象的指针变量#include<iostream> usingnamespacestd; classStudent {public: Student(intn,floats):num(n),score(s){} voidchange(intn,floats){num=n;score=s;} voiddisplay(){cout<<num<<""<<score<<endl;} private: intnum; floatscore;}; voidmain() {Studentstud(101,78.5); Student*constp=&stud; p->display(); p->change(101,80.5); p->display();对象的动态建立和释放例:对象的复制复制构造函数复制构造函数被自动调用有三种情况:classPoint {public: Point(intxx=0,intyy=0){X=xx;Y=yy; cout<<"Constructorcalled.\n";} Point(constPoint&p); ~Point(){cout<<X<<","<<Y<<"ObjectDestroyed.\n";} int