... Địnhnghĩatoántửtrênlớp -1 2 2- Tuynhiênviệcdùngthamchiếunhlàgiátrịtrảvềcủahàmtoántử,cónhiềuđiềuđángnói.Biểuthứcnằmtronglệnhreturnreturnreturnreturnbắtbuộcphảithamchiếuđếnmộtvùngnhớtồntạingaycảkhithựchiệnxongbiểuthứctứclàkhihàmtoántửkếtthúcthựchiện.Vùngnhớấycóthểlàmộtbiếnđợccấptĩnhstaticstaticstaticstatic(cácbiếntoàncụchaybiếncụcbộstatic),static),static),static),mộtbiếnthểhiện(mộtthànhphầndữliệu)củamộtđốitợngnàođóởngoàihàm.Bạnđọccóthểxemchơngtrìnhvecmat3.cpptrongchơng3đểhiểurõhơn.Vấnđềtơngtựcũngđợcđềcậpkhigiátrịtrảvềcủahàmtoántửlàđịachỉ;trongtrờnghợpnày,mộtđốitợngđợctạoranhờcấpphátđộngtrongvùngnhớheapdùngđộclậpvớivùngnhớngănxếpdùngđểcấpphátbiến,đốitợngcụcbộtrongchơngtrình,dovậyvẫncònlulạikhihàmtoántửkếtthúccôngviệc.Hàmtoántửcũngcóthểtrảvềkiểuvoidkhiảnhhởngchỉtácđộnglênmộttrongcáctoánhạngthamgiabiểuthức.Xemđịnhnghĩacủahàmđảodấusốphứctrongvídụsau:VVVVííííddddụụụụ4.54.54.54.5/*complex5.cpp*//*complex5.cpp*//*complex5.cpp*//*complex5.cpp*/#include<iostream.h>#include<conio.h>#include<math.h>classcomplex{floatreal,image;public:complex(floatr=0,floati=0){real=r;image=i;}voiddisplay(){cout<<real<<(image>=0?'+':&apos ;-& apos;)<<"j*"<<fabs(image)<<endl;}/*Hàmđảodấuchỉtácđộnglêntoánhạng,khôngsửdụngđợctrongcácbiểuthức*/voidoperator-(){Địnhnghĩatoántửtrênlớp -1 5 3- fct (6) ;//lờigọihàmthôngthờngfct(a);//lờigọihàmcóxảyrachuyểnđổikiểudữliệugetch();}Goifctvoithamso :6 Goifloat()chocomplexGoifctvoithamso:3Trongchơngtrìnhnày,lờigọihàmfct(a)đÃđợcchơngtrìnhdịchchuyểnthànhcácthaotác:(xiii)chuyểnđổiđốitợngthànhfloatfloatfloatfloat,(xiv)lờigọihàmfct()vớithamsốlàgiátrịthuđợcsauchuyểnđổi.Sựchuyểnđổiđợcthựchiệnkhigọihàmdođókhôngxảyraviệcsaochéplạiđốitợnga. 6. 1.2 6. 1.2 6. 1.2 6. 1.2HHHHààààmmmmtotototoáááánnnnttttửửửửchuychuychuychuyểểểểnnnnkikikikiểểểểuuuutrongtrongtrongtrongbibibibiểểểểuuuuththththứứứứccccChơngtrìnhdớiđâychotabiếtbiểuthứcdạnga+bhoặca+3đợctínhnhthếnàovớia,blàcácđốitợngkiểucomplex.VVVVííííddddụụụụ4.134.134.134.13/*complex8.cpp*//*complex8.cpp*//*complex8.cpp*//*complex8.cpp*/#include<iostream.h>#include<conio.h>classcomplex{floatreal,image;public:complex(floatr,floati){real=r;image=i;}Địnhnghĩatoántửtrênlớp -1 3 9- }TaosophucaPhanthuc:3Phanao:4TaosophucbPhanthuc:5Phanao:3Inhaisophuca=3+j*4b=5+j*3NhNhNhNhậậậậnnnnxxxxéééétttt13.Trongchơngtrìnhtrên,takhôngthấycáchàmthiếtlậptờngminhđểgángiátrịchocácđốitợng.Thựctế ,vi cgáncácgiátrịchocácđốitợngđợcđảmnhiệmbởihàmtoántửoperatoroperatoroperatoroperator>>.14. Vi chiểnthịnộidungcủacácđốitợngsốphứccótrớcđâydohàmthànhphầndisplay()đảmnhiệmthìnayđÃcóthểthaythếnhờhàmtoántửoperator<<.15.Haihàmoperator<<vàoperator>>chophépsửdụngcoutvàcincùnglúcvớinhiềuđốitợngkhácnhau:giátrịsốnguyên,sốthực,xâukýtự,kýtựvàcácđốitợngcủalớpcomplex.Cóthểthửnghiệmcáccáchkhácđểthấyđợcrằnggiảiphápđaratrongchơngtrìnhtrênlàtốtnhất.5.45.45.45.4ĐịĐịĐịĐịnhnhnhnhnghnghnghnghĩĩĩĩaaaachchchchồồồồngngngngccccáááácccctotototoáááánnnnttttửửửửnewnewnewnewvvvvààààdeletedeletedeletedeleteCáctoántửnewnewnewnewvàdeletedeletedeletedeleteđợcđịnhnghĩachotừnglớpvàchúngchỉcóảnhhởngđốivớicáclớpliênquan,còncáclớpkhácvẫnsửdụngcáctoántửnewnewnewnewvàdeletedeletedeletedeletenhbìnhthờng.Địnhnghĩachồngtoántửnewnewnewnewbuộcphảisửdụnghàmthànhphầnvàđápứngcácràngbuộcsau:(ix)cómộtthamsốkiểusize_t(trongtệptiêuđềstddef.h).Thamsốnàytơngứngvớikíchthớc(tínhtheobyte)củađốitợngxincấpphát.Luýrằngđâylàthamsốgiả(dumpargument)vìnósẽkhôngĐịnhnghĩatoántửtrênlớp -1 1 2- c=a+b;trongvídụtrênđợcchơngtrìnhdịchhiểulà:c=a.operator+(b);NhNhNhNhậậậậnnnnxxxxéééétttt7.Thựcracáchviếta+bchỉlàmộtquyớccủachơngtrìnhdịchchophépngờisửdụngviếtgọnlại,nhờđócảmthấytựnhiênhơn.8.Hàmtoántửoperator+phảicóthuộctínhpublicpublicpublicpublicvìnếukhôngchơngtrìnhdịchkhôngthểthựchiệnđợcnóởngoàiphạmvilớp.9.Tronglờigọia.operator+(b),ađóngvaitròcủathamsốngầmđịnhcủahàmthànhphầnvàblàthamsốtờngminh.Sốthamsốtờngminhchohàmtoántửthànhphầnluôníthơnsốngôicủaphéptoánlà1vìcómộtthamsốngầmđịnhlàđốitợnggọihàmtoántử.10.Chơngtrìnhdịchsẽkhôngthểhiểuđợcbiểuthức3+avìcáchviếttơngứng3.operator(a)khôngcóýnghĩa.Đểgiảiquyếttìnhhuốngnàytadùnghàmbạnđểđịnhnghĩahàmtoántử.2.22.22.22.2HHHHààààmmmmtotototoáááánnnnttttửửửửllllààààhhhhààààmmmmbbbbạạạạnnnnChơngtrìnhcomplex2.cppđợcpháttriểntừcomplex1.cppbằngcáchthêmhàmtoántửcộngthêmmộtsốthựcfloatfloatfloatfloatvàophầnthựccủamộtđốitợngcomplex,đợcbiểuthịbởiphépcộngvớisốthựcfloatfloatfloatfloatlàtoánhạngthứnhất,cònđốitợngcomplexlàtoánhạngthứhai.Trongtrờnghợpnàykhôngthểdùngphépcộngnhhàmthànhphầnvìthamsốthứnhấtcủahàmtoántửkhôngcònlàmộtđốitợng.VVVVííííddddụụụụ4.24.24.24.2/*complex2.cpp*//*complex2.cpp*//*complex2.cpp*//*complex2.cpp*/#include<iostream.h>#include<conio.h>#include<math.h>classcomplex{floatreal,image;public:complex(floatr=0,floati=0){real=r;image=i;Địnhnghĩatoántửtrênlớp -1 4 0- đợcmôtảkhigọitớitoántửnew,new,new,new,màdochơngtrìnhbiêndịchtựđộngtínhdựatrênkíchthớccủađốitợngliênđới.(x)trảvềmộtgiátrịkiểuvoidvoidvoidvoid*tơngứngvớiđịachỉvùngnhớđộngđợccấpphát.Khiđịnhnghĩachồngtoándeletedeletedeletedeletetaphảisửdụnghàmthànhphần,tuântheocácquytắcsauđây:(xi)nhậnmộtthamsốkiểucontrỏtớilớptơngứng;contrỏnàymangđịachỉvùngnhớđộngđÃđợccấpphátcầngiảiphóng,(xii)khôngcógiátrịtrảvề(trảvềvoidvoidvoidvoid)NhNhNhNhậậậậnnnnxxxxééééttttCóthểgọiđợccáctoántửnewnewnewnewvàdeletedeletedeletedeletechuẩn(ngaycảkhichúngđÃđợcđịnhnghĩachồng)thôngquatoántửphạmvi.Cáctoántửnewnewnewnewvàdeletedeletedeletedeletelàcáchàmthànhphầnstaticstaticstaticstaticcủacáclớpbởivìchúngkhôngcóthamsốngầmđịnh.Sauđâygiớithiệuvídụđịnhnghĩachồngcáctoántửnewnewnewnewvàdeletedeletedeletedeletetrênlớppoint.Vídụcũngchỉracáchgọilạicáctoántửnewnewnewnewvàdeletedeletedeletedeletetruyềnthống.VVVVííííddddụụụụ4.94.94.94.9/*newdelete.cpp*//*newdelete.cpp*//*newdelete.cpp*//*newdelete.cpp*/#include<iostream.h>#include<stddef.h>#include<conio.h>classpoint{staticintnpt;/*sốđiểmtĩnh*/staticintnpt_dyn;/*sốđiểmđộng*/intx,y;public:point(intox=0,intoy=0){x=ox;y=oy;npt++; -1 0 9- ChChChChơơơơngngngng4444địđịđịđịnhnhnhnhnghnghnghnghĩĩĩĩaaaatotototoáááánnnnttttửửửửtrtrtrtrêêêênnnnllllớớớớpppp(class(class(class(classoperators)operators)operators)operators)Mụcđíchchơngnày:1.Cáchđịnhnghĩacácphéptoánchokiểudữliệulớpvàcấutrúc2.Cáctoántửchuyểnkiểuápdụngchokiểudữliệulớp1.1.1.1.GiGiGiGiớớớớiiiithithithithiệệệệuuuuchungchungchungchungThựcra,vấnđềđịnhnghĩachồngtoántửđÃtừngcótrongC,vídụtrongbiểuthức:a+bkýhiệu+tuỳtheokiểucủaavàbcóthểbiểuthị:3.phépcộnghaisốnguyên,4.phépcộnghaisốthựcđộchínhxácđơn(floatfloatfloatfloat)5.phépcộnghaisốthựcchínhxácđôi(doubledoubledoubledouble) 6. phépcộngmộtsốnguyênvàomộtcontrỏ.TrongC++,cóthểđịnhnghĩachồngđốivớihầuhếtcácphéptoán(mộtngôihoặchaingôi)trêncáclớp,nghĩalàmộttrongsốcáctoánhạngthamgiaphéptoánlàcácđốitợng.Đâylàmộtkhảnăngmạnhvìnóchophépxâydựngtrêncáclớpcáctoántửcầnthiết,làmchochơngtrìnhđợcviếtngắngọndễđọchơnvàcóýnghĩahơn.Chẳnghạn,khiđịnhnghĩamộtlớpcomplexđểbiểudiễncácsốphức,cóth vi ttrongC++:a+b,a-b,a*b,a/bvớia,blàcácđốitợngcomplex.Đểcóđợcđiềunày,tađịnhnghĩachồngcácphéptoán+ ,-, *và/bằngcáchđịnhnghĩahoạtđộngcủatừngphéptoángiốngnhđịnhnghĩamộthàm,chỉkháclàđâylàhàmtoántử(operatorfunction).Hàmtoántửcótênđợcghépbởitừkhoáoperatoroperatoroperatoroperatorvàkýhiệucủaphéptoántơngứng.Bảng4.1đaramộtsốvídụvềtênhàmtoántử.Hàmtoántửcóthểdùngnhlàmộthàmthànhphầncủamộtlớphoặclàhàmtựdo;khiđóhàmtoántửphảiđợckhaibáolàbạncủacáclớpcócácđốitợngmàhàmthaotác.§ÞnhnghÜato¸ntötrªnlíp -1 5 6- #include<iostream.h>#include<conio.h>classcomplex{floatreal,image;public:complex(floatr){cout<<"Hamthietlapdongvaitrocuahamtoantuchuyenkieungamdinh\n";real=r;image=0;}complex(floatr,floati){cout<<"Hamthietlap\n";real=r;image=i;}complex(complex&b){cout<<"Hamthietlapsaocheplai"<<&b<<"Sang"<<this<<endl;real=b.real;image=b.image;}};voidfct(complexp){cout<<"Goifct\n";}voidmain(){clrscr();complexa(3,4);a=complex(12);a=12;fct(4);Địnhnghĩatoántửtrênlớp -1 1 1- /*hàmoperator+địnhnghĩaphéptoán+haingôitrênlớpsốphứccomplex*/complexoperator+(complexb){complexc;c.real=a.real+b.real;c.image=a.image+b.image;returnc;}};voidmain(){clrscr();complexa (-2 ,5);complexb(3,4);cout<<"Haisophuc:\n";a.display();b.display();cout<<"Tonghaisophuc:\n";complexc;c=a+b;//a.operator+(b)c.display();getch();}Haisophuc: -2 +j*53+j*4Tonghaisophuc:1+j*9ChỉthịĐịnhnghĩatoántửtrênlớp -1 1 4- cout<<"a=";a.display();cout<<"b=";b.display();cout<<"Tonghaisophuc:\n";complexc;c=a+b;//a.operator+(b);cout<<"c=";c.display();cout<<"Tangthemphanthuccuaa3donvi\n";complexd;d=3+a;//operator+(3,a);cout<<"d=";d.display();getch();}Haisophuc:a =-2 +j*5b=3+j*4Tonghaisophuc:Goitoicomplex::operator+(complex)c=1+j*9Tangthemphanthuccuaa3donviGoitoioperator+(float,complex)d=1+j*5Trongchơngtrìnhtrên,biểuthứca+bđợcchơngtrìnhhiểulàlờigọihàmthànhphầna.operator+(b),trongkhiđóvớibiểuthức3+a,chơngtrìnhdịchsẽthựchiệnlờigọihàmtựdooperator+(3,a).§ÞnhnghÜato¸ntötrªnlíp -1 4 6- voidmain(){clrscr();intsize;cout<<"Kichthuoccuavector";cin>>size;vector::Size()=size;matrix::Size()=size;cout<<"Taomotvector\n";vectorv;cout<<"v=\n";v.display();cout<<"Taomotmatran\n";matrixm;cout<<"m=\n";m.display();cout<<"Tichm*v\n";vectoru=m*v;/*opertaor*(m,v)*/u.display();getch();}Kichthuoccuavector4TaomotvectorToadothu1:1Toadothu2:2Toadothu3:3Toadothu4:4v=1234TaomotmatranĐịnhnghĩatoántửtrênlớp -1 4 4- for(i=0;i<n;i++)v[i]=b.v[i];}vector::~vector(){deletev;}voidvector::display()//hiểnthịkếtqu{for(inti=0;i<n;i++)cout<<v[i]<<"";cout<<"\n";}/*lớpmatrix*/classmatrix{staticintn;//sốchiềucủavectorvector*m;//vùngnhớchứacáctoạđộpublic:matrix();matrix(matrix&);//hàmthiếtlậpsaochép~matrix();voiddisplay();staticint&Size(){returnn;}friendvectoroperator*(matrix&,vector&);};intmatrix::n=0;/*hàmthànhphầncủalớpmatrix*/matrix::matrix(){inti;Địnhnghĩatoántửtrênlớp -1 2 8- Docáctoántửgánđợcđịnhnghĩadớidạnghàmthànhphần,nênchỉcómộtthamsốtờngminhvàkhôngcóràngbuộcgìvềkiểuđốisốvàkiểugiátrịtrảvềcủacácphépgán.ToToToToáááánnnnttttửửửửtruytruytruytruynhnhnhnhậậậậppppththththàààànhnhnhnhphphphphầầầầnnnn -& gt; -& gt; -& gt; -& gt;Phéptoánnàyđợcdùngđểtruyxuấtcácthànhphầncủamộtcấutrúchaymộtlớpvàcầnphânbiệtvớinhữngcáchsửdụngkhácđểtránhdẫnđếnsựnhầmlẫn.Cóthểđịnhnghĩaphéptoánlấythànhphầngiốngnhđốivớicácphéptoánmộtngôi.ToToToToáááánnnnttttửửửửtruytruytruytruynhnhnhnhậậậậppppththththàààànhnhnhnhphphphphầầầầnnnntheotheotheotheochchchchỉỉỉỉssssốốốốToántửlấythànhphầntheochỉsốđợcdùngđểxácđịnhmộtthànhphầncụthểtrongmộtkhốidữliệu(cấpphátđộnghaytĩnh).Thôngthờngphéptoánnàyđợcdùngvớimảng,nhngcũngcóthểđịnhnghĩalạinókhilàmviệcvớicáckiểudữliệukhác.Chẳnghạnvớikiểudữliệuvectorcóthểđịnhnghĩaphéplấytheochỉsốđểtrảvềmộtthànhphầntoạđộnàođóvector.Vàphảiđợcđịnhnghĩanhhàmthànhphầncómộtđốisốtờngminh.ToToToToáááánnnnttttửửửửggggọọọọiiiihhhhààààmmmmĐâylàmộtphéptoánthúvịnhngnóichungrấtkhóđaramộtvídụcụthể.5.5.5.5.MMMMộộộộttttssssốốốốvvvvííííddddụụụụtitititiêêêêuuuubibibibiểểểểuuuu5.15.15.15.1ĐịĐịĐịĐịnhnhnhnhnghnghnghnghĩĩĩĩaaaachchchchồồồồngngngngphphphphééééppppggggáááánnnn==== Vi cđịnhnghĩachồngphépgánchỉcầnkhicácđốitợngcócácthànhphầndữliệuđộng(chơng3đÃđềcậpvấnđềnày).Chúngtaxétvấnđềnàyquaphântíchđịnhnghĩachồngphépgán=ápdụngcholớpvector.Điểmđầutiêncầnluýlàhàmoperator=nhấtthiếtphảiđợcđịnhnghĩanhlàhàmthànhphầncủalớpvector.Nhvậyhàmoperator=sẽchỉcómộtthamsốtờngminh(toánhạngbênphảidấu=).Giảsửavàblàhaiđốitợngthuộclớpvector,khiđóa=b;đợchiểulàa.operator=(b);§ÞnhnghÜato¸ntötrªnlíp -1 5 2- #include<iostream.h>#include<conio.h>classcomplex{floatreal,image;public:complex(floatr,floati){real=r;image=i;}complex(complex&b){cout<<”Hamthietlapsaochep\n”;real=b.r;image=b.i;}/*Hµmto¸ntöchuyÓnkiÓuÐpbuéc*/operatorfloat(){cout<<"Goifloat()chocomplex\n";returnreal;}voiddisplay(){cout<<real<<(image>=0?'+':&apos ;- ')<<"j*"<<fabs(image)<<endl;}};voidfct(floatn){cout<<"Goifctvoithamso:"<<n<<endl;}voidmain(){clrscr();complexa(3,4);§ÞnhnghÜato¸ntötrªnlíp -1 3 6- }voidEnter_Vector(vector&s){for(inti=0;i<s.length();i++){cout<<"Toadothu"<<i+1<<":";cin>>s[i];}}voidDisplay_Vector(vector&s){cout<<"Sochieu:"<<s.length()<<endl;for(inti=0;i<s.length();i++)cout<<s[i]<<"";cout<<endl;}voidmain(){clrscr();cout<<"Taodoituongs1\n";vectors1;/*NhËpc¸cto¹®échovectors1*/cout<<"Nhapcactoadocuas1\n";Enter_Vector(s1);cout<<"Thongtinvevectors1\n";Display_Vector(s1);vectors2=s1;cout<<"Thongtinvevectors2\n";Display_Vector(s2);getch();}Taodoituongs1Địnhnghĩatoántửtrênlớp -1 3 2- v[i]=b.v[i];}vector::~vector(){cout<<"Giaiphong"<<v<<"cuadoituongtai"<<this<<endl;deletev;}vector&vector::operator=(vector&b){cout<<"Goioperator=()cho"<<this<<"va"<<&b<<endl;if(this!=&b){/*xoávùngnhớđộngđÃcótrongđốitợngvếtrái*/cout<<"xoavungnhodong"<<v<<"trong"<<this<<endl;deletev;/*cấpphátvùngnhớmớicókíchthớcnhtrongb*/v=newfloat[n=b.n];cout<<"capphatvungnhodongmoi"<<v<<"trong"<<this<<endl;for(inti=0;i<n;i++)v[i]=b.v[i];}/*khihaiđốitợnggiốngnhau,khônglàmgì*/elsecout<<"Haidoituonglamot\n";return*this;}voidvector::display(){inti;cout<<"Doituongtai:"<<this<<endl;cout<<"Sochieu:"<<n<<endl;for(i=0;i<n;i++)cout<<v[i]<<"";cout<<"\n";§ÞnhnghÜato¸ntötrªnlíp -1 2 0- clrscr();cout<<"sophuca\n";complexa (-2 ,5);cout<<"sophucb\n";complexb(3,4);cout<<"Haisophuc:\n";cout<<"a=";a.display();cout<<"b=";b.display();cout<<"sophucc\n";complexc;c=a+b;//a.operator+(b);cout<<"c=a+b:";c.display();cout<<"a=";a.display();cout<<"Conga+b+c\n";cout<<"sophucd\n";complexd;d=a+b+c;//a.operator+(b);a.operator+(c);cout<<"a=";a.display();cout<<"b=";b.display();cout<<"c=";c.display();cout<<"d=a+b+c:";d.display();getch();}§ÞnhnghÜato¸ntötrªnlíp -1 1 7- c.real=x+b.real;c.image=b.image;returnc;}voidmain(){clrscr();cout<<"sophuca\n";complexa (-2 ,5);cout<<"sophucb\n";complexb(3,4);cout<<"Haisophuc:\n";cout<<"a=";a.display();cout<<"b=";b.display();complexc(2,3);cout<<"Conga+b+c\n";cout<<"sophucd\n";complexd;d=a+b+c;cout<<"a=";a.display();cout<<"b=";b.display();cout<<"c=";c.display();cout<<"d=a+b+c:";d.display();getch();}sophucaĐịnhnghĩatoántửtrênlớp -1 3 4- Taodoituongtai0xffeaSochieu:0Xincapphatvungbonho0sothuctai0x14acGoioperator=()cho0xffeava0xfff2xoavungnhodong0x14actrong0xffeacapphatvungnhodongmoi0x14actrong0xffeaGoioperator=()cho0xfff2va0xfff2Haidoituonglamot5.25.25.25.2ĐịĐịĐịĐịnhnhnhnhnghnghnghnghĩĩĩĩaaaachchchchồồồồngngngngphphphphéééépppp[][][][]"Xétchơngtrìnhsau:VVVVííííddddụụụụ4.74.74.74.7/*vector5.cpp*//*vector5.cpp*//*vector5.cpp*//*vector5.cpp*/#include<iostream.h>#include<conio.h>classvector{intn;//sốgiátrịfloat*v;//contrỏtớivùngnhớtoạđộpublic:vector();//hàmthiếtlậpkhôngthamsốvector(vector&);intlength(){returnn;}vector&operator=(vector&);float&operator[](inti){returnv[i];}~vector();};vector::vector(){Địnhnghĩatoántửtrênlớp -1 4 8- chuyểnkiểutờngminhxảyrakhisửdụngphépépkiểubắtbuộc.Phépépkiểuthờngđợcdùngtrongcáccâulệnhgọihàmđểgửicácthamsốcókiểukhácvớicácthamsốhìnhthứctơngứng.Cáckiểulớpkhôngthểthoảimáichuyểnsangcáckiểukhácđợcmàphảidongờitựlàmlấy.C++cũngcungcấpcáchthứcđịnhnghĩaphépchuyểnkiểungầmđịnhvàtờngminh.Phépchuyểnkiểungầmđịnhđợcđịnhnghĩabằngmộthàmthiếtlậpchuyểnkiểu(conversionconstructor),cònphépchuyểnkiểutờngminhđợcxácđịnhthôngquatoántửchuyểnkiểuhoặcépkiểu(castoperator).Phépchuyểnkiểungầmđịnhđợcđịnhnghĩathôngquamộthàmthiếtlậpchuyểnkiểucholớp.Vớiđốisốcókiểukiểucầnphảichuyểnthànhmộtđốitợngcủalớpđó.Thamsốnàycóthểcókiểucơsởhaylàmộtđốitợngthuộclớpkhác.Hàmthiếtlậpmộtthamsốtronglớppointtrongcácchơngtrìnhpoint?.cppởchơngtrớclàvídụchohàmthiếtlậpchuyểnkiểu.Trongchỉthịpointp=2;đÃchuyểnkiểutừgiátrịnguyên2sangmộtđốitợngpoint.Thựctếởđâychơngtrìnhdịchgọitớihàmthiếtlậpmộtthamsố.Đâylàsựchuyểnkiểumộtchiều,nhậngiátrịhoặcđốitợngnàođóvàchuyểnnóthànhđốitợngcủalớp.Cáchàmthiếtlậpchuyểnkiểukhôngthểsửdụngđểchuyểncácđốitợngcủalớpmìnhsangcáckiểukhácvàchúngchỉcóthểđợcsửdụngtrongcácphépgánvàphépkhởitạogiátrị.Tuynhiên,cáctoántửchuyểnkiểucóthểđợcdùngđểchuyểncácđốitợngsangcáckiểukhácvàcũngcóthểđợcdùngchocácmụcđíchkhácngoàiphépgánvàkhởitạogiátrị.C++quiđịnhrằngmộthàmtoántửchuyểnkiểunhthếbuộcphảilàhàmthànhphầncủalớpliênquanvàkhôngcóthamsốhoặckiểutrảvề.Têncủanóđợcchotheodạngnhsau:operatortype();trongđótypelàtêncủakiểudữliệumàmộtđốitợngsẽđợcchuyểnsang;cóthểlàkiểudữliệucơsở(khiđótaphảichuyểnkiểutừđốitợngsangkiểucơsở)haymộtkiểulớpkhác(khiđótaphảichuyểnkiểutừđốitợnglớpnàysanglớpkhác). ... Địnhnghĩatoántửtrênlớp -1 2 2- Tuynhiênviệcdùngthamchiếunhlàgiátrịtrảvềcủahàmtoántử,cónhiềuđiềuđángnói.Biểuthứcnằmtronglệnhreturnreturnreturnreturnbắtbuộcphảithamchiếuđếnmộtvùngnhớtồntạingaycảkhithựchiệnxongbiểuthứctứclàkhihàmtoántửkếtthúcthựchiện.Vùngnhớấycóthểlàmộtbiếnđợccấptĩnhstaticstaticstaticstatic(cácbiếntoàncụchaybiếncụcbộstatic),static),static),static),mộtbiếnthểhiện(mộtthànhphầndữliệu)củamộtđốitợngnàođóởngoàihàm.Bạnđọccóthểxemchơngtrìnhvecmat3.cpptrongchơng3đểhiểurõhơn.Vấnđềtơngtựcũngđợcđềcậpkhigiátrịtrảvềcủahàmtoántửlàđịachỉ;trongtrờnghợpnày,mộtđốitợngđợctạoranhờcấpphátđộngtrongvùngnhớheapdùngđộclậpvớivùngnhớngănxếpdùngđểcấpphátbiến,đốitợngcụcbộtrongchơngtrình,dovậyvẫncònlulạikhihàmtoántửkếtthúccôngviệc.Hàmtoántửcũngcóthểtrảvềkiểuvoidkhiảnhhởngchỉtácđộnglênmộttrongcáctoánhạngthamgiabiểuthức.Xemđịnhnghĩacủahàmđảodấusốphứctrongvídụsau:VVVVííííddddụụụụ4.54.54.54.5/*complex5.cpp*//*complex5.cpp*//*complex5.cpp*//*complex5.cpp*/#include<iostream.h>#include<conio.h>#include<math.h>classcomplex{floatreal,image;public:complex(floatr=0,floati=0){real=r;image=i;}voiddisplay(){cout<<real<<(image>=0?'+':&apos ;-& apos;)<<"j*"<<fabs(image)<<endl;}/*Hàmđảodấuchỉtácđộnglêntoánhạng,khôngsửdụngđợctrongcácbiểuthức*/voidoperator-(){Địnhnghĩatoántửtrênlớp -1 5 3- fct (6) ;//lờigọihàmthôngthờngfct(a);//lờigọihàmcóxảyrachuyểnđổikiểudữliệugetch();}Goifctvoithamso :6 Goifloat()chocomplexGoifctvoithamso:3Trongchơngtrìnhnày,lờigọihàmfct(a)đÃđợcchơngtrìnhdịchchuyểnthànhcácthaotác:(xiii)chuyểnđổiđốitợngthànhfloatfloatfloatfloat,(xiv)lờigọihàmfct()vớithamsốlàgiátrịthuđợcsauchuyểnđổi.Sựchuyểnđổiđợcthựchiệnkhigọihàmdođókhôngxảyraviệcsaochéplạiđốitợnga. 6. 1.2 6. 1.2 6. 1.2 6. 1.2HHHHààààmmmmtotototoáááánnnnttttửửửửchuychuychuychuyểểểểnnnnkikikikiểểểểuuuutrongtrongtrongtrongbibibibiểểểểuuuuththththứứứứccccChơngtrìnhdớiđâychotabiếtbiểuthứcdạnga+bhoặca+3đợctínhnhthếnàovớia,blàcácđốitợngkiểucomplex.VVVVííííddddụụụụ4.134.134.134.13/*complex8.cpp*//*complex8.cpp*//*complex8.cpp*//*complex8.cpp*/#include<iostream.h>#include<conio.h>classcomplex{floatreal,image;public:complex(floatr,floati){real=r;image=i;}Địnhnghĩatoántửtrênlớp -1 3 9- }TaosophucaPhanthuc:3Phanao:4TaosophucbPhanthuc:5Phanao:3Inhaisophuca=3+j*4b=5+j*3NhNhNhNhậậậậnnnnxxxxéééétttt13.Trongchơngtrìnhtrên,takhôngthấycáchàmthiếtlậptờngminhđểgángiátrịchocácđốitợng.Thựctế ,vi cgáncácgiátrịchocácđốitợngđợcđảmnhiệmbởihàmtoántửoperatoroperatoroperatoroperator>>.14. Vi chiểnthịnộidungcủacácđốitợngsốphứccótrớcđâydohàmthànhphầndisplay()đảmnhiệmthìnayđÃcóthểthaythếnhờhàmtoántửoperator<<.15.Haihàmoperator<<vàoperator>>chophépsửdụngcoutvàcincùnglúcvớinhiềuđốitợngkhácnhau:giátrịsốnguyên,sốthực,xâukýtự,kýtựvàcácđốitợngcủalớpcomplex.Cóthểthửnghiệmcáccáchkhácđểthấyđợcrằnggiảiphápđaratrongchơngtrìnhtrênlàtốtnhất.5.45.45.45.4ĐịĐịĐịĐịnhnhnhnhnghnghnghnghĩĩĩĩaaaachchchchồồồồngngngngccccáááácccctotototoáááánnnnttttửửửửnewnewnewnewvvvvààààdeletedeletedeletedeleteCáctoántửnewnewnewnewvàdeletedeletedeletedeleteđợcđịnhnghĩachotừnglớpvàchúngchỉcóảnhhởngđốivớicáclớpliênquan,còncáclớpkhácvẫnsửdụngcáctoántửnewnewnewnewvàdeletedeletedeletedeletenhbìnhthờng.Địnhnghĩachồngtoántửnewnewnewnewbuộcphảisửdụnghàmthànhphầnvàđápứngcácràngbuộcsau:(ix)cómộtthamsốkiểusize_t(trongtệptiêuđềstddef.h).Thamsốnàytơngứngvớikíchthớc(tínhtheobyte)củađốitợngxincấpphát.Luýrằngđâylàthamsốgiả(dumpargument)vìnósẽkhôngĐịnhnghĩatoántửtrênlớp -1 1 2- c=a+b;trongvídụtrênđợcchơngtrìnhdịchhiểulà:c=a.operator+(b);NhNhNhNhậậậậnnnnxxxxéééétttt7.Thựcracáchviếta+bchỉlàmộtquyớccủachơngtrìnhdịchchophépngờisửdụngviếtgọnlại,nhờđócảmthấytựnhiênhơn.8.Hàmtoántửoperator+phảicóthuộctínhpublicpublicpublicpublicvìnếukhôngchơngtrìnhdịchkhôngthểthựchiệnđợcnóởngoàiphạmvilớp.9.Tronglờigọia.operator+(b),ađóngvaitròcủathamsốngầmđịnhcủahàmthànhphầnvàblàthamsốtờngminh.Sốthamsốtờngminhchohàmtoántửthànhphầnluôníthơnsốngôicủaphéptoánlà1vìcómộtthamsốngầmđịnhlàđốitợnggọihàmtoántử.10.Chơngtrìnhdịchsẽkhôngthểhiểuđợcbiểuthức3+avìcáchviếttơngứng3.operator(a)khôngcóýnghĩa.Đểgiảiquyếttìnhhuốngnàytadùnghàmbạnđểđịnhnghĩahàmtoántử.2.22.22.22.2HHHHààààmmmmtotototoáááánnnnttttửửửửllllààààhhhhààààmmmmbbbbạạạạnnnnChơngtrìnhcomplex2.cppđợcpháttriểntừcomplex1.cppbằngcáchthêmhàmtoántửcộngthêmmộtsốthựcfloatfloatfloatfloatvàophầnthựccủamộtđốitợngcomplex,đợcbiểuthịbởiphépcộngvớisốthựcfloatfloatfloatfloatlàtoánhạngthứnhất,cònđốitợngcomplexlàtoánhạngthứhai.Trongtrờnghợpnàykhôngthểdùngphépcộngnhhàmthànhphầnvìthamsốthứnhấtcủahàmtoántửkhôngcònlàmộtđốitợng.VVVVííííddddụụụụ4.24.24.24.2/*complex2.cpp*//*complex2.cpp*//*complex2.cpp*//*complex2.cpp*/#include<iostream.h>#include<conio.h>#include<math.h>classcomplex{floatreal,image;public:complex(floatr=0,floati=0){real=r;image=i;Địnhnghĩatoántửtrênlớp -1 4 0- đợcmôtảkhigọitớitoántửnew,new,new,new,màdochơngtrìnhbiêndịchtựđộngtínhdựatrênkíchthớccủađốitợngliênđới.(x)trảvềmộtgiátrịkiểuvoidvoidvoidvoid*tơngứngvớiđịachỉvùngnhớđộngđợccấpphát.Khiđịnhnghĩachồngtoándeletedeletedeletedeletetaphảisửdụnghàmthànhphần,tuântheocácquytắcsauđây:(xi)nhậnmộtthamsốkiểucontrỏtớilớptơngứng;contrỏnàymangđịachỉvùngnhớđộngđÃđợccấpphátcầngiảiphóng,(xii)khôngcógiátrịtrảvề(trảvềvoidvoidvoidvoid)NhNhNhNhậậậậnnnnxxxxééééttttCóthểgọiđợccáctoántửnewnewnewnewvàdeletedeletedeletedeletechuẩn(ngaycảkhichúngđÃđợcđịnhnghĩachồng)thôngquatoántửphạmvi.Cáctoántửnewnewnewnewvàdeletedeletedeletedeletelàcáchàmthànhphầnstaticstaticstaticstaticcủacáclớpbởivìchúngkhôngcóthamsốngầmđịnh.Sauđâygiớithiệuvídụđịnhnghĩachồngcáctoántửnewnewnewnewvàdeletedeletedeletedeletetrênlớppoint.Vídụcũngchỉracáchgọilạicáctoántửnewnewnewnewvàdeletedeletedeletedeletetruyềnthống.VVVVííííddddụụụụ4.94.94.94.9/*newdelete.cpp*//*newdelete.cpp*//*newdelete.cpp*//*newdelete.cpp*/#include<iostream.h>#include<stddef.h>#include<conio.h>classpoint{staticintnpt;/*sốđiểmtĩnh*/staticintnpt_dyn;/*sốđiểmđộng*/intx,y;public:point(intox=0,intoy=0){x=ox;y=oy;npt++; -1 0 9- ChChChChơơơơngngngng4444địđịđịđịnhnhnhnhnghnghnghnghĩĩĩĩaaaatotototoáááánnnnttttửửửửtrtrtrtrêêêênnnnllllớớớớpppp(class(class(class(classoperators)operators)operators)operators)Mụcđíchchơngnày:1.Cáchđịnhnghĩacácphéptoánchokiểudữliệulớpvàcấutrúc2.Cáctoántửchuyểnkiểuápdụngchokiểudữliệulớp1.1.1.1.GiGiGiGiớớớớiiiithithithithiệệệệuuuuchungchungchungchungThựcra,vấnđềđịnhnghĩachồngtoántửđÃtừngcótrongC,vídụtrongbiểuthức:a+bkýhiệu+tuỳtheokiểucủaavàbcóthểbiểuthị:3.phépcộnghaisốnguyên,4.phépcộnghaisốthựcđộchínhxácđơn(floatfloatfloatfloat)5.phépcộnghaisốthựcchínhxácđôi(doubledoubledoubledouble) 6. phépcộngmộtsốnguyênvàomộtcontrỏ.TrongC++,cóthểđịnhnghĩachồngđốivớihầuhếtcácphéptoán(mộtngôihoặchaingôi)trêncáclớp,nghĩalàmộttrongsốcáctoánhạngthamgiaphéptoánlàcácđốitợng.Đâylàmộtkhảnăngmạnhvìnóchophépxâydựngtrêncáclớpcáctoántửcầnthiết,làmchochơngtrìnhđợcviếtngắngọndễđọchơnvàcóýnghĩahơn.Chẳnghạn,khiđịnhnghĩamộtlớpcomplexđểbiểudiễncácsốphức,cóth vi ttrongC++:a+b,a-b,a*b,a/bvớia,blàcácđốitợngcomplex.Đểcóđợcđiềunày,tađịnhnghĩachồngcácphéptoán+ ,-, *và/bằngcáchđịnhnghĩahoạtđộngcủatừngphéptoángiốngnhđịnhnghĩamộthàm,chỉkháclàđâylàhàmtoántử(operatorfunction).Hàmtoántửcótênđợcghépbởitừkhoáoperatoroperatoroperatoroperatorvàkýhiệucủaphéptoántơngứng.Bảng4.1đaramộtsốvídụvềtênhàmtoántử.Hàmtoántửcóthểdùngnhlàmộthàmthànhphầncủamộtlớphoặclàhàmtựdo;khiđóhàmtoántửphảiđợckhaibáolàbạncủacáclớpcócácđốitợngmàhàmthaotác.§ÞnhnghÜato¸ntötrªnlíp -1 5 6- #include<iostream.h>#include<conio.h>classcomplex{floatreal,image;public:complex(floatr){cout<<"Hamthietlapdongvaitrocuahamtoantuchuyenkieungamdinh\n";real=r;image=0;}complex(floatr,floati){cout<<"Hamthietlap\n";real=r;image=i;}complex(complex&b){cout<<"Hamthietlapsaocheplai"<<&b<<"Sang"<<this<<endl;real=b.real;image=b.image;}};voidfct(complexp){cout<<"Goifct\n";}voidmain(){clrscr();complexa(3,4);a=complex(12);a=12;fct(4);Địnhnghĩatoántửtrênlớp -1 1 1- /*hàmoperator+địnhnghĩaphéptoán+haingôitrênlớpsốphứccomplex*/complexoperator+(complexb){complexc;c.real=a.real+b.real;c.image=a.image+b.image;returnc;}};voidmain(){clrscr();complexa (-2 ,5);complexb(3,4);cout<<"Haisophuc:\n";a.display();b.display();cout<<"Tonghaisophuc:\n";complexc;c=a+b;//a.operator+(b)c.display();getch();}Haisophuc: -2 +j*53+j*4Tonghaisophuc:1+j*9ChỉthịĐịnhnghĩatoántửtrênlớp -1 1 4- cout<<"a=";a.display();cout<<"b=";b.display();cout<<"Tonghaisophuc:\n";complexc;c=a+b;//a.operator+(b);cout<<"c=";c.display();cout<<"Tangthemphanthuccuaa3donvi\n";complexd;d=3+a;//operator+(3,a);cout<<"d=";d.display();getch();}Haisophuc:a =-2 +j*5b=3+j*4Tonghaisophuc:Goitoicomplex::operator+(complex)c=1+j*9Tangthemphanthuccuaa3donviGoitoioperator+(float,complex)d=1+j*5Trongchơngtrìnhtrên,biểuthứca+bđợcchơngtrìnhhiểulàlờigọihàmthànhphầna.operator+(b),trongkhiđóvớibiểuthức3+a,chơngtrìnhdịchsẽthựchiệnlờigọihàmtựdooperator+(3,a).§ÞnhnghÜato¸ntötrªnlíp -1 4 6- voidmain(){clrscr();intsize;cout<<"Kichthuoccuavector";cin>>size;vector::Size()=size;matrix::Size()=size;cout<<"Taomotvector\n";vectorv;cout<<"v=\n";v.display();cout<<"Taomotmatran\n";matrixm;cout<<"m=\n";m.display();cout<<"Tichm*v\n";vectoru=m*v;/*opertaor*(m,v)*/u.display();getch();}Kichthuoccuavector4TaomotvectorToadothu1:1Toadothu2:2Toadothu3:3Toadothu4:4v=1234TaomotmatranĐịnhnghĩatoántửtrênlớp -1 4 4- for(i=0;i<n;i++)v[i]=b.v[i];}vector::~vector(){deletev;}voidvector::display()//hiểnthịkếtqu{for(inti=0;i<n;i++)cout<<v[i]<<"";cout<<"\n";}/*lớpmatrix*/classmatrix{staticintn;//sốchiềucủavectorvector*m;//vùngnhớchứacáctoạđộpublic:matrix();matrix(matrix&);//hàmthiếtlậpsaochép~matrix();voiddisplay();staticint&Size(){returnn;}friendvectoroperator*(matrix&,vector&);};intmatrix::n=0;/*hàmthànhphầncủalớpmatrix*/matrix::matrix(){inti;Địnhnghĩatoántửtrênlớp -1 2 8- Docáctoántửgánđợcđịnhnghĩadớidạnghàmthànhphần,nênchỉcómộtthamsốtờngminhvàkhôngcóràngbuộcgìvềkiểuđốisốvàkiểugiátrịtrảvềcủacácphépgán.ToToToToáááánnnnttttửửửửtruytruytruytruynhnhnhnhậậậậppppththththàààànhnhnhnhphphphphầầầầnnnn -& gt; -& gt; -& gt; -& gt;Phéptoánnàyđợcdùngđểtruyxuấtcácthànhphầncủamộtcấutrúchaymộtlớpvàcầnphânbiệtvớinhữngcáchsửdụngkhácđểtránhdẫnđếnsựnhầmlẫn.Cóthểđịnhnghĩaphéptoánlấythànhphầngiốngnhđốivớicácphéptoánmộtngôi.ToToToToáááánnnnttttửửửửtruytruytruytruynhnhnhnhậậậậppppththththàààànhnhnhnhphphphphầầầầnnnntheotheotheotheochchchchỉỉỉỉssssốốốốToántửlấythànhphầntheochỉsốđợcdùngđểxácđịnhmộtthànhphầncụthểtrongmộtkhốidữliệu(cấpphátđộnghaytĩnh).Thôngthờngphéptoánnàyđợcdùngvớimảng,nhngcũngcóthểđịnhnghĩalạinókhilàmviệcvớicáckiểudữliệukhác.Chẳnghạnvớikiểudữliệuvectorcóthểđịnhnghĩaphéplấytheochỉsốđểtrảvềmộtthànhphầntoạđộnàođóvector.Vàphảiđợcđịnhnghĩanhhàmthànhphầncómộtđốisốtờngminh.ToToToToáááánnnnttttửửửửggggọọọọiiiihhhhààààmmmmĐâylàmộtphéptoánthúvịnhngnóichungrấtkhóđaramộtvídụcụthể.5.5.5.5.MMMMộộộộttttssssốốốốvvvvííííddddụụụụtitititiêêêêuuuubibibibiểểểểuuuu5.15.15.15.1ĐịĐịĐịĐịnhnhnhnhnghnghnghnghĩĩĩĩaaaachchchchồồồồngngngngphphphphééééppppggggáááánnnn==== Vi cđịnhnghĩachồngphépgánchỉcầnkhicácđốitợngcócácthànhphầndữliệuđộng(chơng3đÃđềcậpvấnđềnày).Chúngtaxétvấnđềnàyquaphântíchđịnhnghĩachồngphépgán=ápdụngcholớpvector.Điểmđầutiêncầnluýlàhàmoperator=nhấtthiếtphảiđợcđịnhnghĩanhlàhàmthànhphầncủalớpvector.Nhvậyhàmoperator=sẽchỉcómộtthamsốtờngminh(toánhạngbênphảidấu=).Giảsửavàblàhaiđốitợngthuộclớpvector,khiđóa=b;đợchiểulàa.operator=(b);§ÞnhnghÜato¸ntötrªnlíp -1 5 2- #include<iostream.h>#include<conio.h>classcomplex{floatreal,image;public:complex(floatr,floati){real=r;image=i;}complex(complex&b){cout<<”Hamthietlapsaochep\n”;real=b.r;image=b.i;}/*Hµmto¸ntöchuyÓnkiÓuÐpbuéc*/operatorfloat(){cout<<"Goifloat()chocomplex\n";returnreal;}voiddisplay(){cout<<real<<(image>=0?'+':&apos ;- ')<<"j*"<<fabs(image)<<endl;}};voidfct(floatn){cout<<"Goifctvoithamso:"<<n<<endl;}voidmain(){clrscr();complexa(3,4);§ÞnhnghÜato¸ntötrªnlíp -1 3 6- }voidEnter_Vector(vector&s){for(inti=0;i<s.length();i++){cout<<"Toadothu"<<i+1<<":";cin>>s[i];}}voidDisplay_Vector(vector&s){cout<<"Sochieu:"<<s.length()<<endl;for(inti=0;i<s.length();i++)cout<<s[i]<<"";cout<<endl;}voidmain(){clrscr();cout<<"Taodoituongs1\n";vectors1;/*NhËpc¸cto¹®échovectors1*/cout<<"Nhapcactoadocuas1\n";Enter_Vector(s1);cout<<"Thongtinvevectors1\n";Display_Vector(s1);vectors2=s1;cout<<"Thongtinvevectors2\n";Display_Vector(s2);getch();}Taodoituongs1Địnhnghĩatoántửtrênlớp -1 3 2- v[i]=b.v[i];}vector::~vector(){cout<<"Giaiphong"<<v<<"cuadoituongtai"<<this<<endl;deletev;}vector&vector::operator=(vector&b){cout<<"Goioperator=()cho"<<this<<"va"<<&b<<endl;if(this!=&b){/*xoávùngnhớđộngđÃcótrongđốitợngvếtrái*/cout<<"xoavungnhodong"<<v<<"trong"<<this<<endl;deletev;/*cấpphátvùngnhớmớicókíchthớcnhtrongb*/v=newfloat[n=b.n];cout<<"capphatvungnhodongmoi"<<v<<"trong"<<this<<endl;for(inti=0;i<n;i++)v[i]=b.v[i];}/*khihaiđốitợnggiốngnhau,khônglàmgì*/elsecout<<"Haidoituonglamot\n";return*this;}voidvector::display(){inti;cout<<"Doituongtai:"<<this<<endl;cout<<"Sochieu:"<<n<<endl;for(i=0;i<n;i++)cout<<v[i]<<"";cout<<"\n";§ÞnhnghÜato¸ntötrªnlíp -1 2 0- clrscr();cout<<"sophuca\n";complexa (-2 ,5);cout<<"sophucb\n";complexb(3,4);cout<<"Haisophuc:\n";cout<<"a=";a.display();cout<<"b=";b.display();cout<<"sophucc\n";complexc;c=a+b;//a.operator+(b);cout<<"c=a+b:";c.display();cout<<"a=";a.display();cout<<"Conga+b+c\n";cout<<"sophucd\n";complexd;d=a+b+c;//a.operator+(b);a.operator+(c);cout<<"a=";a.display();cout<<"b=";b.display();cout<<"c=";c.display();cout<<"d=a+b+c:";d.display();getch();}§ÞnhnghÜato¸ntötrªnlíp -1 1 7- c.real=x+b.real;c.image=b.image;returnc;}voidmain(){clrscr();cout<<"sophuca\n";complexa (-2 ,5);cout<<"sophucb\n";complexb(3,4);cout<<"Haisophuc:\n";cout<<"a=";a.display();cout<<"b=";b.display();complexc(2,3);cout<<"Conga+b+c\n";cout<<"sophucd\n";complexd;d=a+b+c;cout<<"a=";a.display();cout<<"b=";b.display();cout<<"c=";c.display();cout<<"d=a+b+c:";d.display();getch();}sophucaĐịnhnghĩatoántửtrênlớp -1 3 4- Taodoituongtai0xffeaSochieu:0Xincapphatvungbonho0sothuctai0x14acGoioperator=()cho0xffeava0xfff2xoavungnhodong0x14actrong0xffeacapphatvungnhodongmoi0x14actrong0xffeaGoioperator=()cho0xfff2va0xfff2Haidoituonglamot5.25.25.25.2ĐịĐịĐịĐịnhnhnhnhnghnghnghnghĩĩĩĩaaaachchchchồồồồngngngngphphphphéééépppp[][][][]"Xétchơngtrìnhsau:VVVVííííddddụụụụ4.74.74.74.7/*vector5.cpp*//*vector5.cpp*//*vector5.cpp*//*vector5.cpp*/#include<iostream.h>#include<conio.h>classvector{intn;//sốgiátrịfloat*v;//contrỏtớivùngnhớtoạđộpublic:vector();//hàmthiếtlậpkhôngthamsốvector(vector&);intlength(){returnn;}vector&operator=(vector&);float&operator[](inti){returnv[i];}~vector();};vector::vector(){Địnhnghĩatoántửtrênlớp -1 4 8- chuyểnkiểutờngminhxảyrakhisửdụngphépépkiểubắtbuộc.Phépépkiểuthờngđợcdùngtrongcáccâulệnhgọihàmđểgửicácthamsốcókiểukhácvớicácthamsốhìnhthứctơngứng.Cáckiểulớpkhôngthểthoảimáichuyểnsangcáckiểukhácđợcmàphảidongờitựlàmlấy.C++cũngcungcấpcáchthứcđịnhnghĩaphépchuyểnkiểungầmđịnhvàtờngminh.Phépchuyểnkiểungầmđịnhđợcđịnhnghĩabằngmộthàmthiếtlậpchuyểnkiểu(conversionconstructor),cònphépchuyểnkiểutờngminhđợcxácđịnhthôngquatoántửchuyểnkiểuhoặcépkiểu(castoperator).Phépchuyểnkiểungầmđịnhđợcđịnhnghĩathôngquamộthàmthiếtlậpchuyểnkiểucholớp.Vớiđốisốcókiểukiểucầnphảichuyểnthànhmộtđốitợngcủalớpđó.Thamsốnàycóthểcókiểucơsởhaylàmộtđốitợngthuộclớpkhác.Hàmthiếtlậpmộtthamsốtronglớppointtrongcácchơngtrìnhpoint?.cppởchơngtrớclàvídụchohàmthiếtlậpchuyểnkiểu.Trongchỉthịpointp=2;đÃchuyểnkiểutừgiátrịnguyên2sangmộtđốitợngpoint.Thựctếởđâychơngtrìnhdịchgọitớihàmthiếtlậpmộtthamsố.Đâylàsựchuyểnkiểumộtchiều,nhậngiátrịhoặcđốitợngnàođóvàchuyểnnóthànhđốitợngcủalớp.Cáchàmthiếtlậpchuyểnkiểukhôngthểsửdụngđểchuyểncácđốitợngcủalớpmìnhsangcáckiểukhácvàchúngchỉcóthểđợcsửdụngtrongcácphépgánvàphépkhởitạogiátrị.Tuynhiên,cáctoántửchuyểnkiểucóthểđợcdùngđểchuyểncácđốitợngsangcáckiểukhácvàcũngcóthểđợcdùngchocácmụcđíchkhácngoàiphépgánvàkhởitạogiátrị.C++quiđịnhrằngmộthàmtoántửchuyểnkiểunhthếbuộcphảilàhàmthànhphầncủalớpliênquanvàkhôngcóthamsốhoặckiểutrảvề.Têncủanóđợcchotheodạngnhsau:operatortype();trongđótypelàtêncủakiểudữliệumàmộtđốitợngsẽđợcchuyểnsang;cóthểlàkiểudữliệucơsở(khiđótaphảichuyểnkiểutừđốitợngsangkiểucơsở)haymộtkiểulớpkhác(khiđótaphảichuyểnkiểutừđốitợnglớpnàysanglớpkhác). ... Địnhnghĩatoántửtrênlớp -1 2 2- Tuynhiênviệcdùngthamchiếunhlàgiátrịtrảvềcủahàmtoántử,cónhiềuđiềuđángnói.Biểuthứcnằmtronglệnhreturnreturnreturnreturnbắtbuộcphảithamchiếuđếnmộtvùngnhớtồntạingaycảkhithựchiệnxongbiểuthứctứclàkhihàmtoántửkếtthúcthựchiện.Vùngnhớấycóthểlàmộtbiếnđợccấptĩnhstaticstaticstaticstatic(cácbiếntoàncụchaybiếncụcbộstatic),static),static),static),mộtbiếnthểhiện(mộtthànhphầndữliệu)củamộtđốitợngnàođóởngoàihàm.Bạnđọccóthểxemchơngtrìnhvecmat3.cpptrongchơng3đểhiểurõhơn.Vấnđềtơngtựcũngđợcđềcậpkhigiátrịtrảvềcủahàmtoántửlàđịachỉ;trongtrờnghợpnày,mộtđốitợngđợctạoranhờcấpphátđộngtrongvùngnhớheapdùngđộclậpvớivùngnhớngănxếpdùngđểcấpphátbiến,đốitợngcụcbộtrongchơngtrình,dovậyvẫncònlulạikhihàmtoántửkếtthúccôngviệc.Hàmtoántửcũngcóthểtrảvềkiểuvoidkhiảnhhởngchỉtácđộnglênmộttrongcáctoánhạngthamgiabiểuthức.Xemđịnhnghĩacủahàmđảodấusốphứctrongvídụsau:VVVVííííddddụụụụ4.54.54.54.5/*complex5.cpp*//*complex5.cpp*//*complex5.cpp*//*complex5.cpp*/#include<iostream.h>#include<conio.h>#include<math.h>classcomplex{floatreal,image;public:complex(floatr=0,floati=0){real=r;image=i;}voiddisplay(){cout<<real<<(image>=0?'+':&apos ;-& apos;)<<"j*"<<fabs(image)<<endl;}/*Hàmđảodấuchỉtácđộnglêntoánhạng,khôngsửdụngđợctrongcácbiểuthức*/voidoperator-(){Địnhnghĩatoántửtrênlớp -1 5 3- fct (6) ;//lờigọihàmthôngthờngfct(a);//lờigọihàmcóxảyrachuyểnđổikiểudữliệugetch();}Goifctvoithamso :6 Goifloat()chocomplexGoifctvoithamso:3Trongchơngtrìnhnày,lờigọihàmfct(a)đÃđợcchơngtrìnhdịchchuyểnthànhcácthaotác:(xiii)chuyểnđổiđốitợngthànhfloatfloatfloatfloat,(xiv)lờigọihàmfct()vớithamsốlàgiátrịthuđợcsauchuyểnđổi.Sựchuyểnđổiđợcthựchiệnkhigọihàmdođókhôngxảyraviệcsaochéplạiđốitợnga. 6. 1.2 6. 1.2 6. 1.2 6. 1.2HHHHààààmmmmtotototoáááánnnnttttửửửửchuychuychuychuyểểểểnnnnkikikikiểểểểuuuutrongtrongtrongtrongbibibibiểểểểuuuuththththứứứứccccChơngtrìnhdớiđâychotabiếtbiểuthứcdạnga+bhoặca+3đợctínhnhthếnàovớia,blàcácđốitợngkiểucomplex.VVVVííííddddụụụụ4.134.134.134.13/*complex8.cpp*//*complex8.cpp*//*complex8.cpp*//*complex8.cpp*/#include<iostream.h>#include<conio.h>classcomplex{floatreal,image;public:complex(floatr,floati){real=r;image=i;}Địnhnghĩatoántửtrênlớp -1 3 9- }TaosophucaPhanthuc:3Phanao:4TaosophucbPhanthuc:5Phanao:3Inhaisophuca=3+j*4b=5+j*3NhNhNhNhậậậậnnnnxxxxéééétttt13.Trongchơngtrìnhtrên,takhôngthấycáchàmthiếtlậptờngminhđểgángiátrịchocácđốitợng.Thựctế ,vi cgáncácgiátrịchocácđốitợngđợcđảmnhiệmbởihàmtoántửoperatoroperatoroperatoroperator>>.14. Vi chiểnthịnộidungcủacácđốitợngsốphứccótrớcđâydohàmthànhphầndisplay()đảmnhiệmthìnayđÃcóthểthaythếnhờhàmtoántửoperator<<.15.Haihàmoperator<<vàoperator>>chophépsửdụngcoutvàcincùnglúcvớinhiềuđốitợngkhácnhau:giátrịsốnguyên,sốthực,xâukýtự,kýtựvàcácđốitợngcủalớpcomplex.Cóthểthửnghiệmcáccáchkhácđểthấyđợcrằnggiảiphápđaratrongchơngtrìnhtrênlàtốtnhất.5.45.45.45.4ĐịĐịĐịĐịnhnhnhnhnghnghnghnghĩĩĩĩaaaachchchchồồồồngngngngccccáááácccctotototoáááánnnnttttửửửửnewnewnewnewvvvvààààdeletedeletedeletedeleteCáctoántửnewnewnewnewvàdeletedeletedeletedeleteđợcđịnhnghĩachotừnglớpvàchúngchỉcóảnhhởngđốivớicáclớpliênquan,còncáclớpkhácvẫnsửdụngcáctoántửnewnewnewnewvàdeletedeletedeletedeletenhbìnhthờng.Địnhnghĩachồngtoántửnewnewnewnewbuộcphảisửdụnghàmthànhphầnvàđápứngcácràngbuộcsau:(ix)cómộtthamsốkiểusize_t(trongtệptiêuđềstddef.h).Thamsốnàytơngứngvớikíchthớc(tínhtheobyte)củađốitợngxincấpphát.Luýrằngđâylàthamsốgiả(dumpargument)vìnósẽkhôngĐịnhnghĩatoántửtrênlớp -1 1 2- c=a+b;trongvídụtrênđợcchơngtrìnhdịchhiểulà:c=a.operator+(b);NhNhNhNhậậậậnnnnxxxxéééétttt7.Thựcracáchviếta+bchỉlàmộtquyớccủachơngtrìnhdịchchophépngờisửdụngviếtgọnlại,nhờđócảmthấytựnhiênhơn.8.Hàmtoántửoperator+phảicóthuộctínhpublicpublicpublicpublicvìnếukhôngchơngtrìnhdịchkhôngthểthựchiệnđợcnóởngoàiphạmvilớp.9.Tronglờigọia.operator+(b),ađóngvaitròcủathamsốngầmđịnhcủahàmthànhphầnvàblàthamsốtờngminh.Sốthamsốtờngminhchohàmtoántửthànhphầnluôníthơnsốngôicủaphéptoánlà1vìcómộtthamsốngầmđịnhlàđốitợnggọihàmtoántử.10.Chơngtrìnhdịchsẽkhôngthểhiểuđợcbiểuthức3+avìcáchviếttơngứng3.operator(a)khôngcóýnghĩa.Đểgiảiquyếttìnhhuốngnàytadùnghàmbạnđểđịnhnghĩahàmtoántử.2.22.22.22.2HHHHààààmmmmtotototoáááánnnnttttửửửửllllààààhhhhààààmmmmbbbbạạạạnnnnChơngtrìnhcomplex2.cppđợcpháttriểntừcomplex1.cppbằngcáchthêmhàmtoántửcộngthêmmộtsốthựcfloatfloatfloatfloatvàophầnthựccủamộtđốitợngcomplex,đợcbiểuthịbởiphépcộngvớisốthựcfloatfloatfloatfloatlàtoánhạngthứnhất,cònđốitợngcomplexlàtoánhạngthứhai.Trongtrờnghợpnàykhôngthểdùngphépcộngnhhàmthànhphầnvìthamsốthứnhấtcủahàmtoántửkhôngcònlàmộtđốitợng.VVVVííííddddụụụụ4.24.24.24.2/*complex2.cpp*//*complex2.cpp*//*complex2.cpp*//*complex2.cpp*/#include<iostream.h>#include<conio.h>#include<math.h>classcomplex{floatreal,image;public:complex(floatr=0,floati=0){real=r;image=i;Địnhnghĩatoántửtrênlớp -1 4 0- đợcmôtảkhigọitớitoántửnew,new,new,new,màdochơngtrìnhbiêndịchtựđộngtínhdựatrênkíchthớccủađốitợngliênđới.(x)trảvềmộtgiátrịkiểuvoidvoidvoidvoid*tơngứngvớiđịachỉvùngnhớđộngđợccấpphát.Khiđịnhnghĩachồngtoándeletedeletedeletedeletetaphảisửdụnghàmthànhphần,tuântheocácquytắcsauđây:(xi)nhậnmộtthamsốkiểucontrỏtớilớptơngứng;contrỏnàymangđịachỉvùngnhớđộngđÃđợccấpphátcầngiảiphóng,(xii)khôngcógiátrịtrảvề(trảvềvoidvoidvoidvoid)NhNhNhNhậậậậnnnnxxxxééééttttCóthểgọiđợccáctoántửnewnewnewnewvàdeletedeletedeletedeletechuẩn(ngaycảkhichúngđÃđợcđịnhnghĩachồng)thôngquatoántửphạmvi.Cáctoántửnewnewnewnewvàdeletedeletedeletedeletelàcáchàmthànhphầnstaticstaticstaticstaticcủacáclớpbởivìchúngkhôngcóthamsốngầmđịnh.Sauđâygiớithiệuvídụđịnhnghĩachồngcáctoántửnewnewnewnewvàdeletedeletedeletedeletetrênlớppoint.Vídụcũngchỉracáchgọilạicáctoántửnewnewnewnewvàdeletedeletedeletedeletetruyềnthống.VVVVííííddddụụụụ4.94.94.94.9/*newdelete.cpp*//*newdelete.cpp*//*newdelete.cpp*//*newdelete.cpp*/#include<iostream.h>#include<stddef.h>#include<conio.h>classpoint{staticintnpt;/*sốđiểmtĩnh*/staticintnpt_dyn;/*sốđiểmđộng*/intx,y;public:point(intox=0,intoy=0){x=ox;y=oy;npt++; -1 0 9- ChChChChơơơơngngngng4444địđịđịđịnhnhnhnhnghnghnghnghĩĩĩĩaaaatotototoáááánnnnttttửửửửtrtrtrtrêêêênnnnllllớớớớpppp(class(class(class(classoperators)operators)operators)operators)Mụcđíchchơngnày:1.Cáchđịnhnghĩacácphéptoánchokiểudữliệulớpvàcấutrúc2.Cáctoántửchuyểnkiểuápdụngchokiểudữliệulớp1.1.1.1.GiGiGiGiớớớớiiiithithithithiệệệệuuuuchungchungchungchungThựcra,vấnđềđịnhnghĩachồngtoántửđÃtừngcótrongC,vídụtrongbiểuthức:a+bkýhiệu+tuỳtheokiểucủaavàbcóthểbiểuthị:3.phépcộnghaisốnguyên,4.phépcộnghaisốthựcđộchínhxácđơn(floatfloatfloatfloat)5.phépcộnghaisốthựcchínhxácđôi(doubledoubledoubledouble) 6. phépcộngmộtsốnguyênvàomộtcontrỏ.TrongC++,cóthểđịnhnghĩachồngđốivớihầuhếtcácphéptoán(mộtngôihoặchaingôi)trêncáclớp,nghĩalàmộttrongsốcáctoánhạngthamgiaphéptoánlàcácđốitợng.Đâylàmộtkhảnăngmạnhvìnóchophépxâydựngtrêncáclớpcáctoántửcầnthiết,làmchochơngtrìnhđợcviếtngắngọndễđọchơnvàcóýnghĩahơn.Chẳnghạn,khiđịnhnghĩamộtlớpcomplexđểbiểudiễncácsốphức,cóth vi ttrongC++:a+b,a-b,a*b,a/bvớia,blàcácđốitợngcomplex.Đểcóđợcđiềunày,tađịnhnghĩachồngcácphéptoán+ ,-, *và/bằngcáchđịnhnghĩahoạtđộngcủatừngphéptoángiốngnhđịnhnghĩamộthàm,chỉkháclàđâylàhàmtoántử(operatorfunction).Hàmtoántửcótênđợcghépbởitừkhoáoperatoroperatoroperatoroperatorvàkýhiệucủaphéptoántơngứng.Bảng4.1đaramộtsốvídụvềtênhàmtoántử.Hàmtoántửcóthểdùngnhlàmộthàmthànhphầncủamộtlớphoặclàhàmtựdo;khiđóhàmtoántửphảiđợckhaibáolàbạncủacáclớpcócácđốitợngmàhàmthaotác.§ÞnhnghÜato¸ntötrªnlíp -1 5 6- #include<iostream.h>#include<conio.h>classcomplex{floatreal,image;public:complex(floatr){cout<<"Hamthietlapdongvaitrocuahamtoantuchuyenkieungamdinh\n";real=r;image=0;}complex(floatr,floati){cout<<"Hamthietlap\n";real=r;image=i;}complex(complex&b){cout<<"Hamthietlapsaocheplai"<<&b<<"Sang"<<this<<endl;real=b.real;image=b.image;}};voidfct(complexp){cout<<"Goifct\n";}voidmain(){clrscr();complexa(3,4);a=complex(12);a=12;fct(4);Địnhnghĩatoántửtrênlớp -1 1 1- /*hàmoperator+địnhnghĩaphéptoán+haingôitrênlớpsốphứccomplex*/complexoperator+(complexb){complexc;c.real=a.real+b.real;c.image=a.image+b.image;returnc;}};voidmain(){clrscr();complexa (-2 ,5);complexb(3,4);cout<<"Haisophuc:\n";a.display();b.display();cout<<"Tonghaisophuc:\n";complexc;c=a+b;//a.operator+(b)c.display();getch();}Haisophuc: -2 +j*53+j*4Tonghaisophuc:1+j*9ChỉthịĐịnhnghĩatoántửtrênlớp -1 1 4- cout<<"a=";a.display();cout<<"b=";b.display();cout<<"Tonghaisophuc:\n";complexc;c=a+b;//a.operator+(b);cout<<"c=";c.display();cout<<"Tangthemphanthuccuaa3donvi\n";complexd;d=3+a;//operator+(3,a);cout<<"d=";d.display();getch();}Haisophuc:a =-2 +j*5b=3+j*4Tonghaisophuc:Goitoicomplex::operator+(complex)c=1+j*9Tangthemphanthuccuaa3donviGoitoioperator+(float,complex)d=1+j*5Trongchơngtrìnhtrên,biểuthứca+bđợcchơngtrìnhhiểulàlờigọihàmthànhphầna.operator+(b),trongkhiđóvớibiểuthức3+a,chơngtrìnhdịchsẽthựchiệnlờigọihàmtựdooperator+(3,a).§ÞnhnghÜato¸ntötrªnlíp -1 4 6- voidmain(){clrscr();intsize;cout<<"Kichthuoccuavector";cin>>size;vector::Size()=size;matrix::Size()=size;cout<<"Taomotvector\n";vectorv;cout<<"v=\n";v.display();cout<<"Taomotmatran\n";matrixm;cout<<"m=\n";m.display();cout<<"Tichm*v\n";vectoru=m*v;/*opertaor*(m,v)*/u.display();getch();}Kichthuoccuavector4TaomotvectorToadothu1:1Toadothu2:2Toadothu3:3Toadothu4:4v=1234TaomotmatranĐịnhnghĩatoántửtrênlớp -1 4 4- for(i=0;i<n;i++)v[i]=b.v[i];}vector::~vector(){deletev;}voidvector::display()//hiểnthịkếtqu{for(inti=0;i<n;i++)cout<<v[i]<<"";cout<<"\n";}/*lớpmatrix*/classmatrix{staticintn;//sốchiềucủavectorvector*m;//vùngnhớchứacáctoạđộpublic:matrix();matrix(matrix&);//hàmthiếtlậpsaochép~matrix();voiddisplay();staticint&Size(){returnn;}friendvectoroperator*(matrix&,vector&);};intmatrix::n=0;/*hàmthànhphầncủalớpmatrix*/matrix::matrix(){inti;Địnhnghĩatoántửtrênlớp -1 2 8- Docáctoántửgánđợcđịnhnghĩadớidạnghàmthànhphần,nênchỉcómộtthamsốtờngminhvàkhôngcóràngbuộcgìvềkiểuđốisốvàkiểugiátrịtrảvềcủacácphépgán.ToToToToáááánnnnttttửửửửtruytruytruytruynhnhnhnhậậậậppppththththàààànhnhnhnhphphphphầầầầnnnn -& gt; -& gt; -& gt; -& gt;Phéptoánnàyđợcdùngđểtruyxuấtcácthànhphầncủamộtcấutrúchaymộtlớpvàcầnphânbiệtvớinhữngcáchsửdụngkhácđểtránhdẫnđếnsựnhầmlẫn.Cóthểđịnhnghĩaphéptoánlấythànhphầngiốngnhđốivớicácphéptoánmộtngôi.ToToToToáááánnnnttttửửửửtruytruytruytruynhnhnhnhậậậậppppththththàààànhnhnhnhphphphphầầầầnnnntheotheotheotheochchchchỉỉỉỉssssốốốốToántửlấythànhphầntheochỉsốđợcdùngđểxácđịnhmộtthànhphầncụthểtrongmộtkhốidữliệu(cấpphátđộnghaytĩnh).Thôngthờngphéptoánnàyđợcdùngvớimảng,nhngcũngcóthểđịnhnghĩalạinókhilàmviệcvớicáckiểudữliệukhác.Chẳnghạnvớikiểudữliệuvectorcóthểđịnhnghĩaphéplấytheochỉsốđểtrảvềmộtthànhphầntoạđộnàođóvector.Vàphảiđợcđịnhnghĩanhhàmthànhphầncómộtđốisốtờngminh.ToToToToáááánnnnttttửửửửggggọọọọiiiihhhhààààmmmmĐâylàmộtphéptoánthúvịnhngnóichungrấtkhóđaramộtvídụcụthể.5.5.5.5.MMMMộộộộttttssssốốốốvvvvííííddddụụụụtitititiêêêêuuuubibibibiểểểểuuuu5.15.15.15.1ĐịĐịĐịĐịnhnhnhnhnghnghnghnghĩĩĩĩaaaachchchchồồồồngngngngphphphphééééppppggggáááánnnn==== Vi cđịnhnghĩachồngphépgánchỉcầnkhicácđốitợngcócácthànhphầndữliệuđộng(chơng3đÃđềcậpvấnđềnày).Chúngtaxétvấnđềnàyquaphântíchđịnhnghĩachồngphépgán=ápdụngcholớpvector.Điểmđầutiêncầnluýlàhàmoperator=nhấtthiếtphảiđợcđịnhnghĩanhlàhàmthànhphầncủalớpvector.Nhvậyhàmoperator=sẽchỉcómộtthamsốtờngminh(toánhạngbênphảidấu=).Giảsửavàblàhaiđốitợngthuộclớpvector,khiđóa=b;đợchiểulàa.operator=(b);§ÞnhnghÜato¸ntötrªnlíp -1 5 2- #include<iostream.h>#include<conio.h>classcomplex{floatreal,image;public:complex(floatr,floati){real=r;image=i;}complex(complex&b){cout<<”Hamthietlapsaochep\n”;real=b.r;image=b.i;}/*Hµmto¸ntöchuyÓnkiÓuÐpbuéc*/operatorfloat(){cout<<"Goifloat()chocomplex\n";returnreal;}voiddisplay(){cout<<real<<(image>=0?'+':&apos ;- ')<<"j*"<<fabs(image)<<endl;}};voidfct(floatn){cout<<"Goifctvoithamso:"<<n<<endl;}voidmain(){clrscr();complexa(3,4);§ÞnhnghÜato¸ntötrªnlíp -1 3 6- }voidEnter_Vector(vector&s){for(inti=0;i<s.length();i++){cout<<"Toadothu"<<i+1<<":";cin>>s[i];}}voidDisplay_Vector(vector&s){cout<<"Sochieu:"<<s.length()<<endl;for(inti=0;i<s.length();i++)cout<<s[i]<<"";cout<<endl;}voidmain(){clrscr();cout<<"Taodoituongs1\n";vectors1;/*NhËpc¸cto¹®échovectors1*/cout<<"Nhapcactoadocuas1\n";Enter_Vector(s1);cout<<"Thongtinvevectors1\n";Display_Vector(s1);vectors2=s1;cout<<"Thongtinvevectors2\n";Display_Vector(s2);getch();}Taodoituongs1Địnhnghĩatoántửtrênlớp -1 3 2- v[i]=b.v[i];}vector::~vector(){cout<<"Giaiphong"<<v<<"cuadoituongtai"<<this<<endl;deletev;}vector&vector::operator=(vector&b){cout<<"Goioperator=()cho"<<this<<"va"<<&b<<endl;if(this!=&b){/*xoávùngnhớđộngđÃcótrongđốitợngvếtrái*/cout<<"xoavungnhodong"<<v<<"trong"<<this<<endl;deletev;/*cấpphátvùngnhớmớicókíchthớcnhtrongb*/v=newfloat[n=b.n];cout<<"capphatvungnhodongmoi"<<v<<"trong"<<this<<endl;for(inti=0;i<n;i++)v[i]=b.v[i];}/*khihaiđốitợnggiốngnhau,khônglàmgì*/elsecout<<"Haidoituonglamot\n";return*this;}voidvector::display(){inti;cout<<"Doituongtai:"<<this<<endl;cout<<"Sochieu:"<<n<<endl;for(i=0;i<n;i++)cout<<v[i]<<"";cout<<"\n";§ÞnhnghÜato¸ntötrªnlíp -1 2 0- clrscr();cout<<"sophuca\n";complexa (-2 ,5);cout<<"sophucb\n";complexb(3,4);cout<<"Haisophuc:\n";cout<<"a=";a.display();cout<<"b=";b.display();cout<<"sophucc\n";complexc;c=a+b;//a.operator+(b);cout<<"c=a+b:";c.display();cout<<"a=";a.display();cout<<"Conga+b+c\n";cout<<"sophucd\n";complexd;d=a+b+c;//a.operator+(b);a.operator+(c);cout<<"a=";a.display();cout<<"b=";b.display();cout<<"c=";c.display();cout<<"d=a+b+c:";d.display();getch();}§ÞnhnghÜato¸ntötrªnlíp -1 1 7- c.real=x+b.real;c.image=b.image;returnc;}voidmain(){clrscr();cout<<"sophuca\n";complexa (-2 ,5);cout<<"sophucb\n";complexb(3,4);cout<<"Haisophuc:\n";cout<<"a=";a.display();cout<<"b=";b.display();complexc(2,3);cout<<"Conga+b+c\n";cout<<"sophucd\n";complexd;d=a+b+c;cout<<"a=";a.display();cout<<"b=";b.display();cout<<"c=";c.display();cout<<"d=a+b+c:";d.display();getch();}sophucaĐịnhnghĩatoántửtrênlớp -1 3 4- Taodoituongtai0xffeaSochieu:0Xincapphatvungbonho0sothuctai0x14acGoioperator=()cho0xffeava0xfff2xoavungnhodong0x14actrong0xffeacapphatvungnhodongmoi0x14actrong0xffeaGoioperator=()cho0xfff2va0xfff2Haidoituonglamot5.25.25.25.2ĐịĐịĐịĐịnhnhnhnhnghnghnghnghĩĩĩĩaaaachchchchồồồồngngngngphphphphéééépppp[][][][]"Xétchơngtrìnhsau:VVVVííííddddụụụụ4.74.74.74.7/*vector5.cpp*//*vector5.cpp*//*vector5.cpp*//*vector5.cpp*/#include<iostream.h>#include<conio.h>classvector{intn;//sốgiátrịfloat*v;//contrỏtớivùngnhớtoạđộpublic:vector();//hàmthiếtlậpkhôngthamsốvector(vector&);intlength(){returnn;}vector&operator=(vector&);float&operator[](inti){returnv[i];}~vector();};vector::vector(){Địnhnghĩatoántửtrênlớp -1 4 8- chuyểnkiểutờngminhxảyrakhisửdụngphépépkiểubắtbuộc.Phépépkiểuthờngđợcdùngtrongcáccâulệnhgọihàmđểgửicácthamsốcókiểukhácvớicácthamsốhìnhthứctơngứng.Cáckiểulớpkhôngthểthoảimáichuyểnsangcáckiểukhácđợcmàphảidongờitựlàmlấy.C++cũngcungcấpcáchthứcđịnhnghĩaphépchuyểnkiểungầmđịnhvàtờngminh.Phépchuyểnkiểungầmđịnhđợcđịnhnghĩabằngmộthàmthiếtlậpchuyểnkiểu(conversionconstructor),cònphépchuyểnkiểutờngminhđợcxácđịnhthôngquatoántửchuyểnkiểuhoặcépkiểu(castoperator).Phépchuyểnkiểungầmđịnhđợcđịnhnghĩathôngquamộthàmthiếtlậpchuyểnkiểucholớp.Vớiđốisốcókiểukiểucầnphảichuyểnthànhmộtđốitợngcủalớpđó.Thamsốnàycóthểcókiểucơsởhaylàmộtđốitợngthuộclớpkhác.Hàmthiếtlậpmộtthamsốtronglớppointtrongcácchơngtrìnhpoint?.cppởchơngtrớclàvídụchohàmthiếtlậpchuyểnkiểu.Trongchỉthịpointp=2;đÃchuyểnkiểutừgiátrịnguyên2sangmộtđốitợngpoint.Thựctếởđâychơngtrìnhdịchgọitớihàmthiếtlậpmộtthamsố.Đâylàsựchuyểnkiểumộtchiều,nhậngiátrịhoặcđốitợngnàođóvàchuyểnnóthànhđốitợngcủalớp.Cáchàmthiếtlậpchuyểnkiểukhôngthểsửdụngđểchuyểncácđốitợngcủalớpmìnhsangcáckiểukhácvàchúngchỉcóthểđợcsửdụngtrongcácphépgánvàphépkhởitạogiátrị.Tuynhiên,cáctoántửchuyểnkiểucóthểđợcdùngđểchuyểncácđốitợngsangcáckiểukhácvàcũngcóthểđợcdùngchocácmụcđíchkhácngoàiphépgánvàkhởitạogiátrị.C++quiđịnhrằngmộthàmtoántửchuyểnkiểunhthếbuộcphảilàhàmthànhphầncủalớpliênquanvàkhôngcóthamsốhoặckiểutrảvề.Têncủanóđợcchotheodạngnhsau:operatortype();trongđótypelàtêncủakiểudữliệumàmộtđốitợngsẽđợcchuyểnsang;cóthểlàkiểudữliệucơsở(khiđótaphảichuyểnkiểutừđốitợngsangkiểucơsở)haymộtkiểulớpkhác(khiđótaphảichuyểnkiểutừđốitợnglớpnàysanglớpkhác)....