- 1、本文档共90页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
类与对象2
第5讲 类与对象的更多内容; 1 析构函数Destructor;析构函数举例:日期类Date;析构函数例:Circle类;#include circle.h
#includeiostream.h
void main()
{
Circle c1,c2(1.5);
};#includeiostream.h
class CA
{
public:
CA(int m=5)
{
n=m;
p=new int[n];
coutin constructor:nendl;
}
~CA() //析构函数
{
delete []p;
coutin destructor:nendl;
}
private:
int *p;
int n;
};
void main()
{
CA a(10),b;
};注意;析构函数应用:整型数组类CArray;#includearray.h
#includeiostream.h
CArray::CArray(int s)
{
size=s;
data=new int[size];
}
CArray::~CArray()
{
delete []data;
}
int CArray::getAt(int nIndex)
{
return data[nIndex];
}
void CArray::setAt(int nIndex, int newElement)
{
data[nIndex]=newElement;
};testArray.cpp;复制构造函数是特殊的构造函数,具有一般构造函数的特性(在创建新对象时才被调用)。
函数名同类名,且只有一个形参,该形参是本类对象的引用,从而用一个已经存在的对象(由复制构造函数的参数指定的对象),去初始化另一个正创建的同类的对象。 将已有对象的数据成员的值拷贝给正在创建的另一个同类的对象,以实现同类对象之间数据成员的数据传递。 (本类对象的复制);说明:;#include iostream.h
class MyPoint
{
private:
int x,y;
public:
MyPoint(int xx=0,int yy=0)
{x=xx;y=yy;}
int getX(){return x;};
int getY(){return y;}
};
void main()
{
MyPoint p1(10,20);
MyPoint p2(p1);
coutp1.getX()endl;
coutp2.getX()endl;
};Circle类;testCircle.cpp;自定义复制构造函数例:Circle类;testCircle.cpp;//mypoint.h
class MyPoint
{
private:
int x,y;
public:
MyPoint(int xx=0,int yy=0);
MyPoint(MyPoint p);
int getX();
int getY();
};;复制构造函数在以下三种情况下被调用(从无到有):
1)用一个已存在的对象去初始化正创建的该类的另一个对象时。;3) 如果函数的返回值是类的对象,函数执行完成返回调用者时。;复制构造函数应用:整型数组类CArray;array.cpp;Cont.;testArray.cpp;//mystr.h,声明字符串类
class MyStr
{
public:
MyStr(char *s); //由指定字符串s构造一个字符串
MyStr(MyStr ); //复制构造函数
~MyStr(); //析构函数
void show(); //显示字符串
void setStr(char *s); //将字符串s赋予当前字符串
private:
char *pStr; //字符串首地址
};
;//mystr.cpp
#includeMyStr.h
#incluestring.h
MyStr::MyStr(char *s) //构造函数
{
pStr = new char[strlen(s)+1]; //为字符串分配内存空间
strcpy(pStr,s); //将字符串拷贝到pStr指向的内存空间中
}
MyStr::MyStr(MyStr temp) //复制构造函数
{
pStr = new char[strlen(temp.pStr)+1]; //申请同样的内存空间
strcpy(pStr,temp.pStr); //赋予相同的字符串
文档评论(0)