同济大学c++第八章(2)

2021-09-24 12:38

{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;}};


同济大学c++第八章(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:仓库物料标示卡培训

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: