0
  1. Trang chủ >
  2. Giáo Dục - Đào Tạo >
  3. Cao đẳng - Đại học >

Giáo trình - Vi sinh ký sinh trùng - phần 6 pps

Giáo trình C++ - Đại Học Bách Khoa (phần 6) pps

Giáo trình C++ - Đại Học Bách Khoa (phần 6) pps

... Đị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)....
  • 62
  • 1,208
  • 0
giáo trình dạy đọc tiếng Nga 2 phần 6 pps

giáo trình dạy đọc tiếng Nga 2 phần 6 pps

... часов. А Нового года не видел. - Я не спал, говорит Котька. - Почему же ты тогда его не видел? - Его не было, - говорит Котька. - Ты просто спал, - говорю, - вот и всё! Так закончился ... видишь? - Ты всё сам увидишь в следующем году, - говорит Котька. – Там Нового года не будет. Бой часов будет, а Нового года не будет. - Наверное, ты спал под столом, - говорю я, - и слышал ... чувствовать, видеть/увидеть, ошибиться, продолжать, исполниться, (не) хватать. 102 - Новый год, - говорит Котька. - Как же вы его встречали? Разве так в жизни бывает? Если ты, например, меня встречаешь,...
  • 20
  • 280
  • 0
giáo trình dạy đọc tiếng Nga 1 phần 6 ppsx

giáo trình dạy đọc tiếng Nga 1 phần 6 ppsx

... проедет свою (5)……… . Она сказала: - Гражданин, проснитесь! - Я не сплю, - ответил молодой человек. - Не (6) …… !? А почему у вас глаза были (7)…………? - Я (8) ………. глаза, потому что я не ... теперь, когда Шехерезада свободна, она может выдумать такую сказку, - - - - сказку! - Расскажи сказку, Шехерезада! - С радостью, великий царь! Шехерезада сидит у ног царя. Сейчас она ... живая, - сказал он. - Какая Наталья Александровна? – удивился я. - Тише! Хозяйка дома, разве вы не знаете? Вон, чай (6) Я взглянул и с удивлением увидел: да ! Мраморный бюст в углу - это она...
  • 13
  • 357
  • 1
Giáo trình - Vi sinh ký sinh trùng - phần 6 pps

Giáo trình - Vi sinh sinh trùng - phần 6 pps

... www.thuvien247.netwww.thuvien247.netwww.thuvien247.netwww.thuvien247.netwww.thuvien247.netwww.thuvien247.netwww.thuvien247.netwww.thuvien247.netwww.thuvien247.net...
  • 10
  • 330
  • 0
giáo trình cad trong kỹ thuật điện phần ii giới thiệu phần mềm visual

giáo trình cad trong kỹ thuật điện phần ii giới thiệu phần mềm visual

... sau: - Môi trường thương mại (commercial) 8 0-5 0-2 0. - Môi trường công nghiệp có ánh sáng (công nghiệp nhẹ) (light industrial) 5 0-3 0-1 0. - Môi trường công nghiệp nặng (heavy industrial) 0-3 0-1 0. ... làm vi c - Average (độ rọi trung bình): 2 36. 3lux. - Maximum (độ rọi lớn nhất): 304.3lux. - Minimum (độ rọi nhỏ nhất): 160 .3lux. - Max / Min: tỷ số độ rọi lớn nhất và nhỏ nhất: 1,9 / 1. - Average ... CAD trong kỹ thuật điện 1 PHẦN II GIỚI THIỆU PHẦN MỀM VISUAL I. Giới thiệu về phần mềm Visual 2.0. - Visual là phần mềm được thiết kế cho người sử dụng cần...
  • 17
  • 641
  • 2
Giáo trình hình thành kỳ hạn trung bình của thương phiếu và sự tương đương của hai thương phiếu p1 ppt

Giáo trình hình thành kỳ hạn trung bình của thương phiếu và sự tương đương của hai thương phiếu p1 ppt

... 360 C1 – C1.x.d = 360 C2 – C2.x.d - C2.y.d (C2 – C1).x.d = 360 (C2-C1 )- C2.y.d Nhận xét: - Ngày ngang giá (nếu có) phải ở trước ngày đáo hạn gần nhất. - Ngày ... suất 9 ,6% /năm. Tính hiện giá và tiền chiết khấu của thương phiếu trên. Giải : C = 150.000.000 VND. n = 3 năm. d = 9 ,6% /năm. E’’ = C – V0’’ = 150.000.000 - 113.935 .64 0 = 36. 064 . 360 VND. ... C1 = 100.000.000 VND; n1 = 01/09 -& gt; 16/ 11 = 77. C2 = 150.000.000 VND; n2 = 01/09 -& gt; 30/11 = 91. C3 = 250.000.000 VND; n3 = 01/09 -& gt; 31/12 = 122. Gọi V01, V02,...
  • 5
  • 834
  • 5
Tài liệu Giáo trình dạy đọc tiếng Nga 1 - Phần 6 ppt

Tài liệu Giáo trình dạy đọc tiếng Nga 1 - Phần 6 ppt

... никогда не врать. Я отнёсся к этому заявлению скептически и недоверчиво. - В - ервых, это невозможно, - сказал я ему. – В - торых, это неинтересно. Он посмотрел на меня светлыми, спокойными близорукими ... ког - ибудь встречал или провожал: то в командировку уезжал мой отец, то уезжала куд - о мать, то улетала срочным рейсом моя неугомонная бабушка. - У тебя не семья, а подвижной состав, - вздыхала ... - Это вам – сказал он и покраснел. – Подарок. Посадите её в деревянную кадку и поставьте в тёплой комнате – она всю зиму будет зелёная. - Зачем ты её выкопал, чудак? – спросил Рувим. -...
  • 6
  • 581
  • 4
Tài liệu Giáo trình dạy đọc tiếng Nga 2 - Phần 6 pdf

Tài liệu Giáo trình dạy đọc tiếng Nga 2 - Phần 6 pdf

... четвёртую, пятую - Умница! – сказала моя жена и спросила меня: - А сколько он может съесть их? Десять может? - Десять, - говорю, - может. - А если двадцать? - Двадцать, - говорю, - не знаю. Стал ... середине болота сидит. 49 - Фр - ру! – кричу я. И все ребята за мной тоже кричат: - Фр - ру! И такой умница! Как только услышал он наше «фр - ру», сейчас ма - ах (выражение действия глагола ... точки глаз не - ет да и зажгутся от птичьей ярости. Гневается и боится птица. Подставляю ладонь с орехами. Кузяка все орехи с ладони разбросал – «Цыра - ырак, цык - ык - ыки!» - заругался: «Не...
  • 8
  • 278
  • 0

Xem thêm

Từ khóa: giáo trình vi sinh ký sinh trùnggiáo trình vi sinh vật ký sinh trùnggiáo trình vi sinh vat hoc phần 2 nguyễn lân dũnggiáo trình vi sinh vật họcgiáo trình vi sinh thực phẩmgiáo trinh vi sinh vậtgiáo trình vi sinh y họcgiáo trình vi sinh vật học đại cươnggiáo trình vi sinh vật học môi trườnggiáo trình vi sinh vật công nghiệpgiáo trình vi sinh vật thực phẩmgiáo trình vi sinh vật thú ygiáo trình vi sinh vật học nguyễn lân dũnggiáo trình vi sinh vật đại cươnggiáo trình vi sinh nông nghiệpNghiên cứu sự biến đổi một số cytokin ở bệnh nhân xơ cứng bì hệ thốngchuyên đề điện xoay chiều theo dạngNghiên cứu sự hình thành lớp bảo vệ và khả năng chống ăn mòn của thép bền thời tiết trong điều kiện khí hậu nhiệt đới việt namMột số giải pháp nâng cao chất lượng streaming thích ứng video trên nền giao thức HTTPđề thi thử THPTQG 2019 toán THPT chuyên thái bình lần 2 có lời giảiBiện pháp quản lý hoạt động dạy hát xoan trong trường trung học cơ sở huyện lâm thao, phú thọGiáo án Sinh học 11 bài 13: Thực hành phát hiện diệp lục và carôtenôitGiáo án Sinh học 11 bài 13: Thực hành phát hiện diệp lục và carôtenôitĐỒ ÁN NGHIÊN CỨU CÔNG NGHỆ KẾT NỐI VÔ TUYẾN CỰ LY XA, CÔNG SUẤT THẤP LPWANTrả hồ sơ điều tra bổ sung đối với các tội xâm phạm sở hữu có tính chất chiếm đoạt theo pháp luật Tố tụng hình sự Việt Nam từ thực tiễn thành phố Hồ Chí Minh (Luận văn thạc sĩ)Phát triển du lịch bền vững trên cơ sở bảo vệ môi trường tự nhiên vịnh hạ longNghiên cứu về mô hình thống kê học sâu và ứng dụng trong nhận dạng chữ viết tay hạn chếNghiên cứu tổng hợp các oxit hỗn hợp kích thƣớc nanomet ce 0 75 zr0 25o2 , ce 0 5 zr0 5o2 và khảo sát hoạt tính quang xúc tác của chúngSở hữu ruộng đất và kinh tế nông nghiệp châu ôn (lạng sơn) nửa đầu thế kỷ XIXBT Tieng anh 6 UNIT 2Tăng trưởng tín dụng hộ sản xuất nông nghiệp tại Ngân hàng Nông nghiệp và Phát triển nông thôn Việt Nam chi nhánh tỉnh Bắc Giang (Luận văn thạc sĩ)Nguyên tắc phân hóa trách nhiệm hình sự đối với người dưới 18 tuổi phạm tội trong pháp luật hình sự Việt Nam (Luận văn thạc sĩ)Giáo án Sinh học 11 bài 14: Thực hành phát hiện hô hấp ở thực vậtTrách nhiệm của người sử dụng lao động đối với lao động nữ theo pháp luật lao động Việt Nam từ thực tiễn các khu công nghiệp tại thành phố Hồ Chí Minh (Luận văn thạc sĩ)Chiến lược marketing tại ngân hàng Agribank chi nhánh Sài Gòn từ 2013-2015