类和动态内存分配 ppt.pptx
上传人:王子****青蛙 上传时间:2024-09-14 格式:PPTX 页数:56 大小:233KB 金币:10 举报 版权申诉
预览加载中,请您耐心等待几秒...

类和动态内存分配 ppt.pptx

类和动态内存分配ppt.pptx

预览

免费试读已结束,剩余 46 页请下载文档后查看

10 金币

下载此文档

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

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

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

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

类和动态内存分配12、1动态内存和类以下就是其实现(stringbad、cpp)静态类成员得初始化intStringBad::num_strings=0;///注意:静态类成员位于静态存储区,并不就是类对象得组成部分;在类声明中声明,不可初始化(静态const整型或枚举除外除外);在类方法实现文件中初始化。使用类型名和定义域限制操作符,不用关键字static。然后就是构造函数StringBad::StringBad(constchar*s){len=std::strlen(s);//setsizestr=newchar[len+1];//allotstoragestd::strcpy(str,s);//initializepointernum_strings++;//setobjectcountcout<<num_strings<<":\""<<str<<"\"objectcreated\n";//ForYourInformation}注意:字符串并没有保存在对象中,而就是在单独得堆内存中。对象中存储字符串得地址。析构函数StringBad::~StringBad()//necessarydestructor{cout<<"\""<<str<<"\"objectdeleted,";//FYI--num_strings;//requiredcout<<num_strings<<"left\n";//FYIdelete[]str;//required}此处析构函数就是必须得。在构造函数中用new分配内存,必须在析构函数中用delete释放内存文件vegnews、cpp就是使用上述类得主程序。其中定义了两个函数:一个传引用作参数,一个传值作参数voidcallme1(StringBad&rsb){cout<<"Stringpassedbyreference:\n";cout<<"\""<<rsb<<"\"\n";}voidcallme2(StringBadsb){cout<<"Stringpassedbyvalue:\n";cout<<"\""<<sb<<"\"\n";}1:"CeleryStalksatMidnight"objectcreated2:"LettucePrey"objectcreated3:"SpinachLeavesBowlforDollars"objectcreatedheadline1:CeleryStalksatMidnightheadline2:LettucePreysports:SpinachLeavesBowlforDollarsStringpassedbyreference:"CeleryStalksatMidnight"headline1:CeleryStalksatMidnightStringpassedbyvalue:"LettucePrey""LettucePrey"objectdeleted,2leftheadline2:葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺Initializeoneobjecttoanother:sailor:SpinachLeavesBowlforDollarsAssignoneobjecttoanother:3:"C++"defaultobjectcreatedknot:CeleryStalksatMidnightEndofmain()"CeleryStalksatMidnight"objectdeleted,2left"SpinachLeavesBowlforDollars"objectdeleted,1left"葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺?objectdeleted,0left未处理得异常:System、NullReferenceException:未将对象引用设置到对象得实例。atdelete[](Void*)atStringBad、__dtor(StringBad*)ind:\temp\test2\strngbad、cpp:line37atmain()ind:\temp\test2\vegnews、cpp:line39"C++"objectdeleted,-1left"葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺F"objectdeleted,-2left未处理得异常:System、NullReferenceException:未将对象引用设置到对象得实例。atdelete[](Void*)atStringBad、__dtor(StringBad*)ind:\temp\test2\strngbad、cpp:line37at__Cx