{Staff s,*s1;s.set(“WangQiang”, m ,1526);
s.display(); {cout<<name<<":"<<sex<<", "<<wage<<endl;} s1=&s; void set(char *n,char s,float w) s1->set("GaoLing",'f',2003); {strcpy(name,n); s1->display(); sex=s; wage=w; } } };
8.3.3 对象的初始化1.构造函数和析构函数[例8-2] 看引例的另一种实现#include "iostream.h" class Circle {private: double x,y,r; public: void print(){cout<<"圆心:("<<x<<","<<y<<")"<<endl;
1.定义的同时初 始化对象 2.省略对赋初值 成员函数的额外 调用
void main() { Circle p (0,0,2); p.print(); }
cout<<"半径:"<<r<<endl; } Circle(double x1,double y1,double r1) { x=x1; y=y1; r=r1;} };
构造函数、 同类名
构造函数特点 是成员函数,可写在类体内,亦可写在类体外。 函数名同类名,不能指定函数类型,可以带参数。 可重载,即可定义多个参数个数不同的函数。 在创建对象时由系统自动调用,程序中不能直接调用。 析构函数特点:
是成员函数,可写在类体内,亦可写在类体外。 函数名同类名,前面多个字符“~” ,不指定类型,无参。 不可重载,即一个类只能定义一个析构函数。 可被调用,也可由系统调用。系统自动调用情况如下: 若一个对象被定义在函数体内,则当该函数结束时, 该对象的析构函数被自动调用。 当一个对象是使用new运算符被动态创建的,在使用 delete释放时,析构函数将会被自动调用
2.缺省构造函数和缺省析构函数形式:<类名>::<缺省构造函数名>( ) { } <类名>::~<缺省析构函数名>() { }
说明: 若没有定义任何构造函数,系统会自动生成上述无参的缺省 构造函数及析构函数 若定义一个静态对象而没有指明初始化时,编译器会按缺省 构造函数对对象的所有数据成员都初始化为0或空。
[例8.3] 定义一个Circle1类,具有求一个圆的面积、 求两个圆的面积之和,以及输出面积等功能 。#include "iostream.h" class Circle1 {private: double x,y,r,s; public: void print(){cout<<"圆心:("<<x<<","<<y<<")"<<endl;
void main() {初始化了吗
Circle1 p1(0,0,2),p2(1,1,4),p3;
p1.print();
cout<<"半径:"<<r<<endl; } Circle1() 可缺省吗?验证一下 { }Circle1(double x1,double y1,double r1)
p2.print();p3.addarea(p1,p2); p3.disp(); }
{ x=x1; y=y1; r=r1;} void addarea(Circle1 p1,Circle1 p2){s=3.14*(p1.r*p1.r)+3.14*(p2.r*p2.r);}
void disp() { cout<<"面积:"<<s<<endl;}};
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说公务员考试同济大学c++第八章(2)在线全文阅读。
相关推荐: