0
  1. Trang chủ >
  2. Công Nghệ Thông Tin >
  3. Kỹ thuật lập trình >

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

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

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

... in()làmộthàmvớihaithamsốhìnhthứckiểuTvàcógiátrịtrảvềcũnglàkiểuT.Khuônhình -2 4 3- chứanhữngnhântốđểngờitacóthểbiếtđợckhuônhìnhhàmđócóthểđợcápdụngđếnmứcnào.CCCCááááccccthamthamthamthamssssốốốốbibibibiểểểểuuuuththththứứứứccccccccủủủủaaaammmmộộộộttttkhukhukhukhuôôôônnnnhhhhììììnhnhnhnhhhhhààààmmmmTrongđịnhnghĩacủamộtkhuônhìnhhàmcóthểkhaibáocácthamsốhìnhthứcvớikiểuxácđịnh.Tagọichúnglàcácthamsốbiểuthức.Chơngtrìnhtemplat6.cppsauđâyđịnhnghĩamộtkhuônhìnhhàmchophépđếmsốlợngcácphầntửnul(0đốivớicácgiátrịsốhoặcNULLnếulàcontrỏ)trongmộtbảngvớikiểubấtkỳvàkíchthớcnàođó:VVVVííííddddụụụụ6.56.56.56.5/*templat6.cpp*//*templat6.cpp*//*templat6.cpp*//*templat6.cpp*/#include<iostream.h>#include<conio.h>template<classT>intcompte(T*tab,intn){inti,nz=0;for(i=0;i<n;i++)if(!tab[i])nz++;returnnz;}voidmain(){clrscr();intt[5]={5,2,0,2,0};charc[6]={0,12,0,0,0};cout<<"compte(t)="<<compte(t,5)<<"\n";cout<<"compte(c)="<<compte(c,6)<<"\n";getch();}compte(t)=2compte(c)=4Tacóthểnóirằngkhuônhìnhhàmcompteđịnhnghĩamộthọcáchàmcomptetrongđókiểucủathamsốđầutiênlàtuỳý(đợcxácđịnhbởilờigọi),cònkiểucủathamsốthứhaiđÃxácđịnh(kiểuintintintint).Khuônhình -2 3 8- CCCCááááccccthamthamthamthamssssốốốốkikikikiểểểểuuuuccccủủủủaaaakhukhukhukhuôôôônnnnhhhhììììnhnhnhnhhhhhààààmmmmPhầnnàytrìnhbàycáchđavàocácthamsốkiểutrongmộtkhuônhìnhhàm,đểchơngtrìnhbiêndịchsảnsinhmộthàmthểhiện.CCCCááááccccthamthamthamthamssssốốốốkikikikiểểểểuuuutrongtrongtrongtrongđịđịđịđịnhnhnhnhnghnghnghnghĩĩĩĩaaaakhukhukhukhuôôôônnnnhhhhììììnhnhnhnhhhhhààààmmmmMộtcáchtổngquát,khuônhìnhhàmcóthểcómộthaynhiềuthamsốkiểu,vớimỗithamsốnàycótừkhoáclassclassclassclassđiliềntrớc,chẳnghạnnh:template<classT,classU>intfct(Ta,T*b,Uc){ ... n=sizeof(T);}Taxemchơngtrìnhsau:VVVVííííddddụụụụ6.36.36.36.3/*templat4.cpp*//*templat4.cpp*//*templat4.cpp*//*templat4.cpp*/#include<iostream.h>#include<conio.h>template<classT,classU>Tfct(Tx,Uy,Tz){returnx+y+z;}voidmain(){clrscr();intn=1,p=2,q=3;Khuônhình -2 4 9- x=abs;y=ord;} };(ii)Ngợclại,khiđịnhnghĩacủahàmthànhphầnnằmngoàiđịnhnghĩalớp,khiđócầnphảinhắclạichochơngtrìnhdịchbiết:cácthamsốkiểucủakhuônhìnhlớp,cónghĩalàphảinhắclại:template<classT>trớcđịnhnghĩahàm,còntêncủakhuônhìnhlớpđợcviếtnhlàpoint<T>Tómlại,dòngtiêuđềđầyđủchohàmthànhphầndisplay()củakhuônhìnhhàmpointnhsau:template<classT>voidpoint<T>::display()Sauđâylàđịnhnghĩađầyđủcủakhuônhìnhlớppoint:#include<iostream.h>//tạokhuônhìnhhàmtemplate<classT>classpoint{Tx,y;public://địnhnghĩahàmthànhphầnởbêntrongkhuônhìnhlớppoint(Tabs=0,Tord=0){x=abs;y=ord;}voiddisplay();};//địnhnghĩahàmthànhphầnởbênngoàikhuônhìnhlớptemplate<classT>voidpoint<T>::display(){cout<<"Toado:"<<x<<""<<y<<"\n";}SSSSửửửửddddụụụụngngngngkhukhukhukhuôôôônnnnhhhhììììnhnhnhnhllllớớớớppppMộtkhikhuônhìnhlớppointđÃđợcđịnhnghĩa,mộtkhaibáonh:point<int>ai;Khuônhình -2 5 5- CCCCụụụụththththểểểểhohohohoáááákhukhukhukhuôôôônnnnhhhhììììnhnhnhnhllllớớớớppppKhảnăngcụthểhoákhuônhìnhlớpcóđôichútkhácbiệtsovớikhuônhìnhhàm.Khuônhìnhlớpđịnhnghĩahọcáclớptrongđómỗilớpchứađồngthờiđịnhnghĩacủachínhnóvàcáchàmthànhphần.Nhvậy,tấtcảcáchàmthànhphầncùngtênsẽđợcthựchiệntheocùngmộtgiảithuật.Nếutamuốnchomộthàmthànhphầnthíchứngvớimộttìnhhuốngcụthểcụthểnàođó,cóthểviếtmộtđịnhnghĩakhácchonó.Sauđâylàmộtvídụcảitiếnkhuônhìnhlớppoint.ởđâychúngtađÃcụthểhoáhàmhiểnthịdisplay()chotrờnghợpkiểudữliệucharcharcharchar:VVVVííííddddụụụụ6.106.106.106.10/*templat11.cpp*//*templat11.cpp*//*templat11.cpp*//*templat11.cpp*/#include<iostream.h>#include<conio.h>//tạomộtkhuônhìnhlớptemplate<classT>classpoint{Tx,y;public:point(Tabs=0,Tord=0){x=abs;y=ord;}voiddisplay();};template<classT>voidpoint<T>::display(){cout<<"Toado:"<<x<<""<<y<<"\n";}//Thêmmộthàmdisplaycụthểhoátrongtrờnghợpcáckýtựvoidpoint<char>::display(){cout<<"Toado:"<<(int)x<<""<<(int)y<<"\n";}voidmain(){clrscr();point<int>ai(3,5);ai.display();Khuônhình -2 6 4- 1.Khuônhìnhhàm ... 251Khuônhình -2 4 7- //char*)getch();}min(n,p)=12min(adr1,adr2)=CD2DNhvậy,bảnchấtcủacụthểhoákhuônhìnhhàmlàđịnhnghĩacáchàmthôngthờngcócùngtênvớikhuônhìnhhàmđểgiảiquyếtmộtsốtrờnghợprủirokhitaápdụngkhuônhìnhhàmchomộtsốkiểudữliệuđặcbiệtnàođó.TTTTổổổổngngngngkkkkếếếếttttvvvvềềềềccccáááácccckhukhukhukhuôôôônnnnhhhhììììnhnhnhnhhhhhààààmmmmMộtcáchtổngquát,tacóthểđịnhnghĩamộthaynhiềukhuônhìnhcùngtên,mỗikhuônhìnhcócácthamsốkiểucũngnhlàcácthamsốbiểuthứcriêng.Hơnnữa,cóthểcungcấpcáchàmthôngthờngvớicùngtênvớimộtkhuônhìnhhàm;trongtrờnghợpnàytanóiđólàsựcụthểhoámộthàmthểhiện.Trongtrờnghợptổngquátkhicóđồngthờicảhàmđịnhnghĩachồngvàkhuônhìnhhàm,chơngtrìnhdịchlựachọnhàmtơngứngvớimộtlờigọihàmdựatrêncácnguyêntắcsauđây:(vii)Đầutiên,kiểmtratấtcảcáchàmthôngthờngcùngtênvàchúýđếnsựtơngứngchínhxác;nếuchỉcómộthàmphùhợp,hàmđóđợcchọn;cònnếucónhiềuhàmcùngthoảmÃn(cósựnhậpnhằng)sẽtạoramộtlỗibiêndịchvàquátrìnhtìmkiếmbịgiánđoạn.(viii)Nếukhôngcóhàmthôngthờngnàotơngứngchínhxácvớilờigọi,khiđótakiểmtratấtcảcáckhuônhìnhhàmcócùngtênvớilờigọi;nếuchỉcómộttơngứngchínhxácđợctìmthấy,hàmthểhiệntơngứngđợcsảnsinhvàvấnđềđợcgiảiquyết;cònnếucónhiềuhơnmộtkhuônhìnhhàm(cósựnhậpnhằng)điềuđósẽgâyralỗibiêndịchvàquátrìnhtìmkiếmbịngắt.(ix)Cuốicùng,nếukhôngcókhuônhìnhhàmphùhợp,takiểmtramộtlầnnữatấtcảcáchàmthôngthờngcùngtênvớilờigoi.TrongtrờnghợpnàychúngtaphảitìmkiếmsựtơngứngdựavàocảcácchuyểnkiểuchophéptrongC /C++. KHUKHUKHUKHUôôôôNNNNhhhhììììnhnhnhnhllllớớớớppppKhuKhuKhuKhuôôôônnnnhhhhììììnhnhnhnhllllớớớớppppllllààààggggìììì????Bêncạnhkháiniệmkhuônhìnhhàm,C++cònchophépđịnhnghĩakhuônhìnhlớp.Cũnggiốngnhkhuônhìnhhàm,ởđâytachỉcầnviếtđịnhnghĩacáckhuônhìnhlớpmộtlầnrồisauđócóthểápdụngchúngvớicáckiểudữliệukhácnhauđểđợccáclớpthểhiệnkhácnhau.Khuônhình -2 6 0- nguyên.Kýhiệut2d[1][2]biểuthịmộtthamchiếuđếnthànhphầnthứbacủat2d[1],bảngt2d[1]làphầntửthứhaicủabảnghaichiềucácsốnguyênt2d.Sauđâylàmộtchơngtrìnhhoànchỉnh:VVVVííííddddụụụụ6.106.106.106.10#include<iostream.h>#include<conio.h>template<classT,intn>classtable{Ttab[n];public:table()//hàmthiếtlập{cout<<"Taobangco"<<n<<"phantu\n";}T&operator[](inti)//hàmtoántử[]{returntab[i];}};voidmain(){clrscr();table<table<int,2>,3>t2d;t2d[1][2]=15;cout<<"t2d[1][2]="<<t2d[1][2]<<"\n";inti,j;for(i=0;i<2;i++)for(j=0;j<3;j++)t2d[i][j]=i*3+j;for(i=0;i<2;i++){for(j=0;j<3;j++)cout<<t2d[i][j]<<"";cout<<"\n";}Khuônhình -2 4 6- Lờigọifct(&x,&y)cóthểtơngứngvớikhuônhìnhhàm1haykhuônhìnhhàm4.CCCCụụụụththththểểểểhohohohoááááccccáááácccchhhhààààmmmmththththểểểểhihihihiệệệệnnnnMộtkhuônhìnhhàmđịnhnghĩamộthọcáchàmdựatrênmộtđịnhnghĩachung,nóicáchkhácchúngthựchiệntheocùngmộtgiảithuật.Trongmộtsốtrờnghợp,sựtổngquátnàycóthểchịurủiro,chẳnghạnnhtrongtrờnghợpápdụngkhuônhìnhhàmminchokiểucharcharcharchar*nhđÃnóiởtrên.Kháiniệmcụthểhoá,đaramộtgiảiphápkhắcphụccácrủirokiểunhtrên.C++chophéptacungcấp,ngoàiđịnhnghĩacủamộtkhuônhìnhhàm,địnhnghĩacủamộtsốcáchàmchomộtsốkiểudữliệucủathamsố.Taxétchơngtrìnhvídụsauđây:VVVVííííddddụụụụ6.76.76.76.7/*templat8.cpp*//*templat8.cpp*//*templat8.cpp*//*templat8.cpp*/#include<iostream.h>#include<string.h>#include<conio.h>//khuônhìnhhàmmintemplate<classT>Tmin(Ta,Tb){if(a<b)returna;elsereturnb;}//hàmminchokiểuxâukýtựchar*min(char*cha,char*chb){if(strcmp(cha,chb)<0)returncha;elsereturnchb;}voidmain(){clrscr();intn=12,p=15;char*adr1="DHBK",*adr2="CD2D";cout<<"min(n,p)="<<min(n,p)<<"\n";//khuônhìnhhàmcout<<"min(adr1,adr2)="<<min(adr1,adr2)<<endl;//hàmchar*min(char*,Khuônhình -2 5 1- point<int>ai(3,5);ai.display();point<char>ac('d','y');ac.display();point<double>ad(3.5,2.3);ad.display();getch();}Toado:35Toado:dyToado:3.52.3CCCCááááccccthamthamthamthamssssốốốốtrongtrongtrongtrongkhukhukhukhuôôôônnnnhhhhììììnhnhnhnhllllớớớớppppHoàntoàngiốngnhkhuônhìnhhàm,cáckhuônhìnhlớpcóthểcócácthamsốkiểuvàthamsốbiểuthức.Trongphầnnàytabànvềcácthamsốkiểu;còncácthamsốbiểuthứcsẽđợcnóitrongphầnsau.Tuycónhiềuđiểmgiốngnhaugiữakhuônhìnhhàmvàkhuônhìnhlớp,nhngcácràngbuộcđốivớicáckiểuthamsốlạikhôngnhnhau.SSSSốốốốllllợợợợngngngngccccááááccccthamthamthamthamssssốốốốkikikikiểểểểuuuutrongtrongtrongtrongmmmmộộộộttttkhukhukhukhuôôôônnnnhhhhììììnhnhnhnhllllớớớớppppXétvídụkhaibáosau:template<classT,classU,classV>//danhsáchbathamsốkiểuclasstry{Tx;Ut[5];...
  • 33
  • 544
  • 1
Giáo trình C++ - Đại Học Bách Khoa (phần 1) potx

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

... -Cónhữngngônngữlai,cóthểlậptrìnhhớngđốitợngmộtcáchđầyđủ,màcũngcóthểlậptrìnhdùngđốitợng.TurboPASCAL,C++thuộcloạinày.NgônngữCtừkhirađờiđÃsớmkhẳngđịnhđợcvịthếlàcôngcụchủyếutrongcôngnghệphầnmềm.C++pháttriểnCthànhngônngữhớngđốitợngđÃthừakếđợccácđiểmmạnhcủaCvàthíchứngvớixuhớnglậptrìnhhiệnđại.ChọnC++đểgiảngdạycũngnhlàmcôngcụpháttriểnphầnmềmlàhợplý,vìkhôngnhữngnómạnh,mànódễhiểuchonhữngngờivốnquenvớilậptrìnhtruyềnthống,nayđivàolậptrìnhhớngđốitợng.Nhvậychủđềcủacuốnsáchlàhoàntoànthíchhợpvớinhucầugiảngdạylậptrìnhởcáctrờngđạihọc,cũngnhvớinhucầucủanhữnglậptrìnhviênđanghànhnghề.Cuốnsáchgồm6chơngvà4phụlục-Chơng1:Lậptrìnhhớngđốitợng-phơngphápgiảiquyếtbàitoánmới-Chơng2:NhữngmởrộngcủaC++-Chơng3:Đốitợngvàlớp-Chơng4:Địnhnghĩatoántửtrênlớp-Chơng5:Kỹthuậtthừakế-Chơng6:Khuônhình-Phụlục1:Cáckênhxuấtnhập-Phụlục2:Xửlýlỗi-Phụlục3:Bàitoánquanhệgiađình-Phụlục4:MÃchơngtrìnhbàitoánquanhệgiađình.TTTTµµµµiiiililililiÖÖÖÖuuuuthamthamthamthamkhkhkhkh¶¶¶¶oooo[1].ClaudeDelannoy,ProgrammerenlangageC++,EYROLLES.[2].ScottRobertLadd,TurboC++TechniquesandApplications,M&TBooks.[3].H.M.Deitel&P.J.Deitel,CHowtoprogram.NhvậycuốnsáchbaotrùmđủcácvấnđềcầnđềcậpvàđÃđợccấutrúckháhợplý.Mỗichơngđềukếtthúcbởiphầntómtắtvàcácbàitập,thuậntiệnchoviệchọcvàthựchành.NộidungcácphầnđÃđợctrìnhbàydễhiểu,chuẩnxác,cónhiềuthídụminhhoạ.Cuốnsáchcóthểdùnglàm:-GiáotrìnhgiảngdạyvềlậptrìnhhớngđốitợngởcáctrờngĐạihọc.-SáchthamkhảovềC++chonhữngngờilậptrìnhchuyênnghiệp.Tôichorằngquyểnsáchlàrấtcóíchvàhyvọngsẽsớmđợcxuấtbảnđểphụcvụbạnđọc.XintrântrọnggiớithiệuvớibạnđọccuốnsáchLậptrìnhhớngđốitợngvớiC++,mộtsxảnphẩmlaođộngkhoahọcnghiêmtúccủatậpthểcánbộgiảngdạykhonaCôngnghệThôngtin,ĐạihọcBáchkhoaHànội.Hànội,ngày4tháng5năm1999GS.GS.GS.GS.NguyNguyNguyNguyễễễễnnnnVVVVăăăănnnnBaBaBaBa Khoa Khoa Khoa KhoaCNTT,CNTT,CNTT,CNTT,ĐĐĐĐHBKHBKHBKHBKHHHHàààànnnnộộộộiiii ... -Cónhữngngônngữlai,cóthểlậptrìnhhớngđốitợngmộtcáchđầyđủ,màcũngcóthểlậptrìnhdùngđốitợng.TurboPASCAL,C++thuộcloạinày.NgônngữCtừkhirađờiđÃsớmkhẳngđịnhđợcvịthếlàcôngcụchủyếutrongcôngnghệphầnmềm.C++pháttriểnCthànhngônngữhớngđốitợngđÃthừakếđợccácđiểmmạnhcủaCvàthíchứngvớixuhớnglậptrìnhhiệnđại.ChọnC++đểgiảngdạycũngnhlàmcôngcụpháttriểnphầnmềmlàhợplý,vìkhôngnhữngnómạnh,mànódễhiểuchonhữngngờivốnquenvớilậptrìnhtruyềnthống,nayđivàolậptrìnhhớngđốitợng.Nhvậychủđềcủacuốnsáchlàhoàntoànthíchhợpvớinhucầugiảngdạylậptrìnhởcáctrờngđạihọc,cũngnhvớinhucầucủanhữnglậptrìnhviênđanghànhnghề.Cuốnsáchgồm6chơngvà4phụlục-Chơng1:Lậptrìnhhớngđốitợng-phơngphápgiảiquyếtbàitoánmới-Chơng2:NhữngmởrộngcủaC++-Chơng3:Đốitợngvàlớp-Chơng4:Địnhnghĩatoántửtrênlớp-Chơng5:Kỹthuậtthừakế-Chơng6:Khuônhình-Phụlục1:Cáckênhxuấtnhập-Phụlục2:Xửlýlỗi-Phụlục3:Bàitoánquanhệgiađình-Phụlục4:MÃchơngtrìnhbàitoánquanhệgiađình.TTTTµµµµiiiililililiÖÖÖÖuuuuthamthamthamthamkhkhkhkh¶¶¶¶oooo[1].ClaudeDelannoy,ProgrammerenlangageC++,EYROLLES.[2].ScottRobertLadd,TurboC++TechniquesandApplications,M&TBooks.[3].H.M.Deitel&P.J.Deitel,CHowtoprogram.NhvậycuốnsáchbaotrùmđủcácvấnđềcầnđềcậpvàđÃđợccấutrúckháhợplý.Mỗichơngđềukếtthúcbởiphầntómtắtvàcácbàitập,thuậntiệnchoviệchọcvàthựchành.NộidungcácphầnđÃđợctrìnhbàydễhiểu,chuẩnxác,cónhiềuthídụminhhoạ.Cuốnsáchcóthểdùnglàm:-GiáotrìnhgiảngdạyvềlậptrìnhhớngđốitợngởcáctrờngĐạihọc.-SáchthamkhảovềC++chonhữngngờilậptrìnhchuyênnghiệp.Tôichorằngquyểnsáchlàrấtcóíchvàhyvọngsẽsớmđợcxuấtbảnđểphụcvụbạnđọc.XintrântrọnggiớithiệuvớibạnđọccuốnsáchLậptrìnhhớngđốitợngvớiC++,mộtsxảnphẩmlaođộngkhoahọcnghiêmtúccủatậpthểcánbộgiảngdạykhonaCôngnghệThôngtin,ĐạihọcBáchkhoaHànội.Hànội,ngày4tháng5năm1999GS.GS.GS.GS.NguyNguyNguyNguyễễễễnnnnVVVVăăăănnnnBaBaBaBa Khoa Khoa Khoa KhoaCNTT,CNTT,CNTT,CNTT,ĐĐĐĐHBKHBKHBKHBKHHHHàààànnnnộộộộiiii ... -Cónhữngngônngữlai,cóthểlậptrìnhhớngđốitợngmộtcáchđầyđủ,màcũngcóthểlậptrìnhdùngđốitợng.TurboPASCAL,C++thuộcloạinày.NgônngữCtừkhirađờiđÃsớmkhẳngđịnhđợcvịthếlàcôngcụchủyếutrongcôngnghệphầnmềm.C++pháttriểnCthànhngônngữhớngđốitợngđÃthừakếđợccácđiểmmạnhcủaCvàthíchứngvớixuhớnglậptrìnhhiệnđại.ChọnC++đểgiảngdạycũngnhlàmcôngcụpháttriểnphầnmềmlàhợplý,vìkhôngnhữngnómạnh,mànódễhiểuchonhữngngờivốnquenvớilậptrìnhtruyềnthống,nayđivàolậptrìnhhớngđốitợng.Nhvậychủđềcủacuốnsáchlàhoàntoànthíchhợpvớinhucầugiảngdạylậptrìnhởcáctrờngđạihọc,cũngnhvớinhucầucủanhữnglậptrìnhviênđanghànhnghề.Cuốnsáchgồm6chơngvà4phụlục-Chơng1:Lậptrìnhhớngđốitợng-phơngphápgiảiquyếtbàitoánmới-Chơng2:NhữngmởrộngcủaC++-Chơng3:Đốitợngvàlớp-Chơng4:Địnhnghĩatoántửtrênlớp-Chơng5:Kỹthuậtthừakế-Chơng6:Khuônhình-Phụlục1:Cáckênhxuấtnhập-Phụlục2:Xửlýlỗi-Phụlục3:Bàitoánquanhệgiađình-Phụlục4:MÃchơngtrìnhbàitoánquanhệgiađình.TTTTµµµµiiiililililiÖÖÖÖuuuuthamthamthamthamkhkhkhkh¶¶¶¶oooo[1].ClaudeDelannoy,ProgrammerenlangageC++,EYROLLES.[2].ScottRobertLadd,TurboC++TechniquesandApplications,M&TBooks.[3].H.M.Deitel&P.J.Deitel,CHowtoprogram.NhvậycuốnsáchbaotrùmđủcácvấnđềcầnđềcậpvàđÃđợccấutrúckháhợplý.Mỗichơngđềukếtthúcbởiphầntómtắtvàcácbàitập,thuậntiệnchoviệchọcvàthựchành.NộidungcácphầnđÃđợctrìnhbàydễhiểu,chuẩnxác,cónhiềuthídụminhhoạ.Cuốnsáchcóthểdùnglàm:-GiáotrìnhgiảngdạyvềlậptrìnhhớngđốitợngởcáctrờngĐạihọc.-SáchthamkhảovềC++chonhữngngờilậptrìnhchuyênnghiệp.Tôichorằngquyểnsáchlàrấtcóíchvàhyvọngsẽsớmđợcxuấtbảnđểphụcvụbạnđọc.XintrântrọnggiớithiệuvớibạnđọccuốnsáchLậptrìnhhớngđốitợngvớiC++,mộtsxảnphẩmlaođộngkhoahọcnghiêmtúccủatậpthểcánbộgiảngdạykhonaCôngnghệThôngtin,ĐạihọcBáchkhoaHànội.Hànội,ngày4tháng5năm1999GS.GS.GS.GS.NguyNguyNguyNguyễễễễnnnnVVVVăăăănnnnBaBaBaBa Khoa Khoa Khoa KhoaCNTT,CNTT,CNTT,CNTT,ĐĐĐĐHBKHBKHBKHBKHHHHàààànnnnộộộộiiii...
  • 7
  • 1,247
  • 20
Giáo trình C++ - Đại Học Bách Khoa (phần 2) ppsx

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

... 60Mụclục -3 2 9- MMMMụụụụccccllllụụụụccccChChChChơơơơngngngng1.1.1.1.LLLLậậậậpppptrtrtrtrììììnhnhnhnhhhhhớớớớngngngngđốđốđốđốiiiittttợợợợng,ng,ng,ng,phphphphơơơơngngngngphphphphááááppppgigigigiảảảảiiiiquyquyquyquyếếếếttttbbbbààààiiiitotototoáááánnnnmmmmớớớớiiii1.Phơngpháplậptrình 12.Bàitoánquanhệgiađình 23.Lậptrìnhhớngđốitợng 63.1Mộtsốkháiniệm 73.2CácuđiểmcủaLTHĐT 83.3NhữngứngdụngcủaLTHĐT 94.Cácngônngữlậptrìnhhớngđốitợng 95.NgônngữlậptrìnhC++ 10ChChChChơơơơngngngng2.2.2.2.CCCCááááccccmmmmởởởởrrrrộộộộngngngngccccủủủủaaaa C++ C++ C++ C++sosososovvvvớớớớiiiiCCCC1.CácđiểmkhôngtơngthíchgiữaC++vàANSIC ... 10ChChChChơơơơngngngng2.2.2.2.CCCCááááccccmmmmởởởởrrrrộộộộngngngngccccủủủủaaaa C++ C++ C++ C++sosososovvvvớớớớiiiiCCCC1.CácđiểmkhôngtơngthíchgiữaC++vàANSIC 131.1Địnhnghĩahàm 131.2Khaibáohàmnguyênmẫu ... 95Giảiphápthứnhất-prodlàhàmbạntựdo 95Giảiphápthứhai-prodlàhàmthànhphầncủalớpmatrixvàlàbạncủavect97Mụclục -3 3 2- 8.Vídụtổnghợp 989.Tómtắt 1039.1Ghinhớ 1039.2Cáclỗithờnggặp 1049.3Mộtsốthóiquenlậptrìnhtốt...
  • 9
  • 391
  • 4
Giáo trình C++ - Đại Học Bách Khoa (phần 3) pps

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

... củahọlàai.Ngoàiracũngcầncómộtthuộctínhnữachobiếttêncáthểlàgì.Cóthểmôtảmộtlớpcácđốitợngconngờinhhình1.3.NếuchỉcónhvậythìchẳngkhácgìmộtcấutrúchaybảnghitrongcấutrúcdữdiệuđợcsửdụngởphơngphápLTCT.VấnđềởđâylàphơngphápLTHĐTxemcácmốiquanhệtronggiađìnhđợchìnhthànhmộtcáchtựnhiêndocácsựkiệncụthểtrongcuộcsốngtạonên.Vídụ,khingờiphụnữsinhcon,đứaconcôConConConConngngngngờờờờiiiiTên?Cha?Mẹ?Anhem?Concái?Vợ/Chồng?Hình1.3MôtảmộtlớpcácđốitợngconngờiMr.Mr.Mr.Mr.ThThThThắắắắngngngngMs.Ms.Ms.Ms.NgaNgaNgaNgaMr.Mr.Mr.Mr.QuangQuangQuangQuangMr.Mr.Mr.Mr.HHHHngngngngMs.Ms.Ms.Ms.VVVVâââânnnnMiss.Miss.Miss.Miss.MaiMaiMaiMaiMiss.Miss.Miss.Miss.TrangTrangTrangTrangMr.Mr.Mr.Mr.TuTuTuTuấấấấnnnnMs.Ms.Ms.Ms.HHHHằằằằngngngngMr.Mr.Mr.Mr.ThThThThàààànhnhnhnhMs.Ms.Ms.Ms.LanLanLanLan - - - - Hình1.2MởrộngquanhệgiữacácgiađìnhNgônng C++ -6 - toàntơngtựđốivớicáccâuhỏiquanhệgầnnhlàem,làchị,làbố,làmẹ, CòncâuhỏinhĐốitợngcóphảilàôngnộicủaYkhông?phứctạphơnchútít.Đểtrảlờiđợccáccâuhỏicóquanhệxanhthếtaphảidựavàokếtquảtrảlờicủacáccâuhỏivềcácquanhệgầngũihơn.ĐểbiếtđợcXđúnglàôngnộicủaYthìphảichỉramộtngờiZnàođómàXlàbốcủaZvàZlàbốcủaY.NếukhôngchỉrađợcZthìXkhôngphảilàôngnộicủaY.ViệctìmkiếmZhoàntoànđơngiảnbởivìchơngtrìnhquảnlýtậpcácđốitợngconngời.HÃytìmZtrongtậpđốitợngConngời.CóthểthấycâuhỏibanđầuđÃđợcphânchiathànhhaicâuhỏiđơngiảnvớichúngmàđÃcócáchtrảlời.Tómlại,cácvấnđềcủabàitoánđÃđợcgiảiquyếtkhitiếpcậntheophơngphápLTHĐT.Mộtlợiđiểmcóthểthấyngaylàbàitoánđợcphântíchrấtgầnvớithựctếvàtựnhiên.TrênđâymớichỉlàsựphântíchsơkhaibàitoándựatheophơngphápLTHĐT.ĐểlàmhoànchỉnhđợcbàitoáncòncầnmộtsốkĩthuậtcủaLTHĐTnhtínhkếthừa,tínhđahình, ... Lậptrìnhhớngđốitợng -7 - 2.Chơngtrìnhđợcchiathànhcácđốitợng.3.Cáccấutrúcdữliệuđợcthiếtkếsaochođặctảđợcđốitợng.4.Cáchàmthaotáctrêncácvùngdữliệucủađốitợngđợcgắnvớicấutrúcdữliệuđó.5.Dữliệuđợcđónggóilại,đợcchegiấuvàkhôngchophépcáchàmngoạilaitruynhậptựdo.6.Cácđốitợngtácđộngvàtraođổithôngtinvớinhauquacáchàm7.Cóthểdễdàngbổsungdữliệuvàcáchàmmớivàođốitợngnàođókhicầnthiết8.Chơngtrìnhđợcthiếtkếtheocáchtiếpcậntừdớilên(bottom-up).SauđâylàmộtsốkháiniệmđợcsửdụngtrongLTHĐT.3.13.13.13.1MMMMộộộộttttssssốốốốkhkhkhkhááááiiiininininiệệệệmmmmĐốĐốĐốĐốiiiittttợợợợngngngng(object)(object)(object)(object)Đốitợnglàsựkếthợpgiữadữliệuvàthủtục(haycòngọilàcácphơngthức-method)thaotáctrêndữliệuđó.CóthểđaracôngthứcphảnánhbảnchấtkỹthuậtcủaLTHĐTnhsau:ĐốĐốĐốĐốiiiittttợợợợngngngng====DDDDữữữữlilililiệệệệuuuu++++PhPhPhPhơơơơngngngngththththứứứứccccLLLLớớớớpppp(class)(class)(class)(class)LớplàmộtkháiniệmmớitrongLTHĐTsovớicáckỹthuậtlậptrìnhkhác.Đólàmộttậpcácđốitợngcócấutrúcdữliệuvàcácphơngthứcgiốngnhau(haynóicáchkháclàmộttậpcácđốitợngcùngloại).Nhvậykhicómộtlớpthìchúngtasẽbiếtđợcmộtmôtảcấutrúcdữliệuvàphơngthứccủacácđốitợngthuộclớpđó.Mỗiđốitợngsẽlàmộtthểhiệncụthể(instance)củalớpđó.Tronglậptrình,chúngtacóthểcoimộtlớpnhlàmộtkiểu,còncácđốitợngsẽlàcácbiếncókiểucủalớp.NguyNguyNguyNguyêêêênnnnttttắắắắccccđóđóđóđóngngngngggggóóóóiiiiddddữữữữlilililiệệệệuuuuTrongLTCTtađÃthấylàcáchàmhaythủtụcđợcsửdụngmàkhôngcầnbiếtđếnnộidungcụthểcủanó.Ngờisửdụngchỉcầnbiếtchứcnăngcủahàmcũngnhcácthamsốcầntruyềnvàođểgọihàmchạymàkhôngcầnquantâmđếnnhữnglệnhcụthểbêntrongnó.Ngờitagọiđólàsựđónggóivềchứcnăng.TrongLTHĐT,khôngnhữngcácchứcnăngđợcđónggóimàcảdữliệucũngnhvậy.Vớimỗiđốitợngngờitakhôngthểtruynhậptrựctiếpvàocácthànhphầndữliệucảunómàphảithôngquacácthànhphầnchứcnăng(cácphơngthức)đểlàmviệcđó.ChúngtasẽthấysựđónggóithựcsựvềdữliệuchỉcótrongmộtngônngữLTHĐTthuầnkhiết(pure)theonghĩacácngônngữđợcthiếtkếngaytừđầuchỉ -1 - ChChChChơơơơngngngng1111LLLLậậậậpppptrtrtrtrììììnhnhnhnhhhhhớớớớngngngngđốđốđốđốiiiittttợợợợngngngngphphphphơơơơngngngngphphphphááááppppgigigigiảảảảiiiiquyquyquyquyếếếếttttbbbbààààiiiitotototoáááánnnnmmmmớớớớiiii1.1.1.1.PhPhPhPhơơơơngngngngphphphphááááppppllllậậậậpppptrtrtrtrììììnhnhnhnhTừnhiềunămnaychúngtađÃnghenhiềuđếnthuậtngữLậptrìnhhớngđốitợng(OOP-ObjectOrientedProgramming).Vậythựcchấtnólàgì?Đểhiểuđợcvấnđềnàychúngtabắtđầunhìnlạimộtchútlịchsửpháttriểncácphơngpháplậptrình.Vàonhữngngàyđầupháttriểncủamáytính,khicácphầnmềmcònrấtđơngiảnchỉcỡvàichụcdònglệnh,chơngtrìnhđợcviếttuầntựvớicáccâulệnhthựchiệntừđầuđếncuối.Cáchviếtchơngtrìnhnhthếnàygọilàphơngphápllllậậậậpppptrtrtrtrììììnhnhnhnhtuytuytuytuyếếếếnnnnttttíííínhnhnhnh.Khoahọcmáytínhngàycàngpháttriển,cácphầnmềmđòihỏingàycàngphứctạpvàlớnhơnrấtnhiều.Đếnlúcnàyphơngpháplậptrìnhtuyếntínhtỏrakémhiệuquảvàcónhữngtrờnghợpngờilậptrìnhkhôngthểkiểmsoátđợcchơngtrình.Thếlàphơngphápllllậậậậpppptrtrtrtrììììnhnhnhnhccccấấấấuuuutrtrtrtrúúúúcccc(LTCT)rađời.Theocáchtiếpcậnnày,chơngtrìnhđợctổchứcthànhcácchơngtrìnhcon.Mỗichơngtrìnhconđảmnhậnxửlýmộtcôngviệcnhỏtrongtoànbộhệthống.Mỗichơngtrìnhconnàylạicóthểchianhỏthànhcácchơngtrìnhconnhỏhơn.Quátrìnhphânchianhvậytiếptụcdiễnrachođếncácchơngtrìnhconnhỏnhậnđợcđủđơngiản.Ngờitagọiđólàquátrìnhlàmmịndần.Cácchơngtrìnhcontơngđốiđộclậpvớinhau,dođócóthểphâncôngchotừngnhómđảmnhậnviếtcácchơngtrìnhconkhácnhau.NgônngữlậptrìnhthểhiệnrõnétnhấtphơngpháplậptrìnhcấutrúcchínhlàPascal.Tuynhiên,khisửdụngphơngpháplậptrìnhnàyvẫncòngặpmộtkhókhănlớnlàtổchứcdữliệucủahệthốngnhthếnàotrongmáytính.BởivìtheoquanđiểmcủaLTCTthìChơngtrình=Cấutrúcdữliệu+Giảithuật.Đểlàmđợcviệcnàyđòihỏingờilậptrìnhphảicókiếnrấtvữngvềcấutrúcdữliệu.Mộtkhókhănnữagặpphảilàgiảithuậtcủachơngtrìnhphụthuộcrấtchặtchẽvàocấutrúcdữliệu,dovậychỉcầnmộtsựthayđổinhỏởcấutrúcdữliệucũngcóthểlàmthayđổigiảithuậtvànhvậyphảiviếtlạichơng trình. Điềunàyrõràngkhôngthểthíchhợpkhiphảixâydựngmộtdựánphầnmềmrấtlớn.Mộtphơngpháplậptrìnhmớirađờiđểkhắcphụcnhợcđiểmnàyvàđóchínhlàphơngphápllllậậậậpppptrtrtrtrììììnhnhnhnhhhhhớớớớngngngngđốđốđốđốiiiittttợợợợngngngng(LTHĐT).Điểmcănbảncủaphơngphápnàylàthiếtkếchơngtrìnhxoayquanhdữliệucủahệthống.Nghĩalàlúcnàycácthaotácxửlýcủahệthốngđợcgắnliềnvớidữliệuvànhvậymộtsựthayđổinhỏcủadữliệuchỉảnhhởngđếncácmộtsốnhỏcáchàmxửlýliênquan.Sựgắnkếtgiữadữliệuvàcáchàmxửlýtrênchúngtạorađốitợng.MộtuđiểmnữacóởphơngphápLTHĐTlàcáchtiếpcậnbàitoántrởnêngầngũivớithựctếhơn.Đểhiểurõhơnvềphơngpháplậptrìnhnày,khônggìtốthơnlàchúngtađivàomộtbàitoáncụthể,chẳnghạnbàitoánquanhệgiađình.ởđâyyêuLậptrìnhhớngđốitợng -3 - Mộtcâuhỏiđặtra:Liệuvớicấutrúcdữliệucũcóđảmbảogiảiquyếtđợcvấnđềnàykhông?.Rõràngcâutrảlờilàkhông.Sơđồquanhệtrênhìnhvẽsẽphảimôtảquanhệcủamộtgiađình.Chỉvớichútítsựthayđổivềcấutrúcdữliệucũngdẫnđếnmộtloạtvấnđềđòihỏiphảiviếtlạicácgiảithuậtcủachơngtrình.PhơngpháplậptrìnhmớihớngđốitợngchophépchúngtakhắcphụcđợccácvấnđềđÃnêura.TrongsuốtcáctrìnhbàycủacuốnsáchnàysẽcốgắngnêubậtđợccáchgiảiquyếtvấnđềnhờLTHĐT.TheocáchtiếpcậnLTHĐT,bàitoánquanhệgiađìnhđợcxemxétdớigócđộquảnlýtậpcácđốitợngConConConConngngngngờờờờiiii.Đểbiếtmốiquanhệgiađìnhcủamỗicáthể,cầnthểhiệnmộtsốquanhệcơbảnnhcha,mẹ,anhem,concái,vợchồngcủacáthểđó.Nhvậy,mỗiđốitợngconngờicủabàitoáncócácthuộctínhriêng,nóilênrằngchamẹ,anhem,v.v ... ChúngtôihyvọngrằngquasựphântíchmộtbàitoánnhỏtrênđÃchứngtỏđợclợiíchcủaphơngphápLTHĐT.TrongmụctiếptheochúngtôisẽtómtắtvàđaratổngquansơbộvềLTHĐT.3.3.3.3.LLLLậậậậpppptrtrtrtrììììnhnhnhnhhhhhớớớớngngngngđốđốđốđốiiiittttợợợợngngngngLậptrìnhhớngđốitợngđặttrọngtâmvàođốitợng,yếutốquantrọngtrongquátrìnhpháttriểnchơngtrìnhvàkhôngchophépdữliệubiếnđộngtựdotronghệthống.Dữliệuđợcgắnchặtvớicáchàmthànhcácvùngriêngmàchỉcócáchàmđótácđộnglênvàcấmcáchàmbênngoàitruynhậptớimộtcáchtuỳtiện.LTHĐTchophépchúngtaphântíchbàitoánthànhcácthựcthểđợcgọilàcácđốitợngvàsauđóxâydựngcácdữliệucùngcáchàmxungquanhcácđốitợngđó.Cácđốitợngcóthểtácđộng,traođổithôngtinvớinhauthôngquacơchếthôngbáo(message).Tổchứcmộtchơngtrìnhhớngđốitợngcóthểmôtảnhtronghình1.6.LTHĐTcócácđặctínhchủyếusau:1.TậptrungvàodữliệuthaychocáchàmĐốĐốĐốĐốiiiittttợợợợngngngngBBBBDữliệuHàmĐốĐốĐốĐốiiiittttợợợợngngngngAAAADữliệuHàmĐốĐốĐốĐốiiiittttợợợợngngngngCCCCDữliệuHàmmessageHình1.6CácđốitợngtraođổiquathôngbáoNgônng C++ -1 0- CácngônngữSIMULA,SMALLTALK,JAVAthuộchọngônngữLTHĐTthuầnkhiết,nghĩalànókhôngchophéppháttriểncácchơngtrìnhcấutrúctrêncácngônngữloạinày.CònngônngữC++thuộcloạingônngữlaibởivìnóđợcpháttriểntừngônngữC.DođótrênC++vẫncóthểsửdụngtínhcấutrúcvàđốitợngcủachơngtrình.Điềunàytỏrarấtphùhợpkhichúngtamớibắtđầuhọcmộtngônngữlậptrình.Đóchínhlàlýdomàchúngtôisửdụngngônng C++ ểgiớithiệuphơngphápLTHĐTtrongcuốnsáchnày.MộtlýdokhácnữalàC++sửdụngcúphápcủangônngữClàngônngữrấtthôngdụngtronglậptrìnhchuyênnghiệp.5.5.5.5.NgNgNgNgôôôônnnnngngngngữữữữllllậậậậpppptrtrtrtrììììnhnhnhnh C++ C++ C++ C++Vàonăm1983,giáosBjarneStroustrapbắtđầunghiêncứuvàpháttriểnviệccàiđặtkhảnăngLTHĐTvàongônngữCtạoramộtngônngữmớigọil C++. TêngọinàycóthểphântíchýnghĩarằngnólàngônngữCmàcóhaiđặcđiểmmớitơngứngvớihaidấucộng.ĐặcđiểmthứnhấtlàmộtsốkhảnăngmởrộngsovớiCnhthamchiếu,chồnghàm,thamsốmặcđịnh...
  • 13
  • 603
  • 4
Giáo trình C++ - Đại Học Bách Khoa (phần 4) doc

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

... ),nhờvậytiếtkiệmthờigianthựchiện.Bêncạnhđócácchỉthịtơngứngsẽđợcsinhramỗikhigọihàmdođóchiphílutrữtănglênkhihàmđợcgọinhiềulần.Điểmbấtlợikhisửdụngcáchàminlineinlineinlineinlinelànếuchúngquálớnvàđợcgọithờngxuyênthìkíchthớcchơngtrìnhsẽtănglênrấtnhanh.Vìlýdonày,chỉnhữnghàmđơngiản,khôngchứacáccấutrúclặpmớiđợckhaibáolàhàminlineinlineinlineinline.Việcsửdụnghàminlineinlineinlineinlinesovớicácmacrocóthamsốcóhaiđiểmlợi.Trớchếthàminlineinlineinlineinlinecungcấpmộtcáchcócấutrúchơnkhimởrộngcáchàmđơngiảnthànhhàminlineinlineinlineinline.Thựctếchothấykhitạomộtmacrocóthamsốthờnghayquêncácdấuđóngngoặc,rấtcầnđếnđểđảmbảosựmởrộngnộituyếnriêngtrongmỗitrờnghợp.Vớimacrocóthểgâyrahiệuứngphụhoặcbịhạnchếkhảnăngsửdụng.Chẳnghạnvớimacro:#definesquare(x){x++*x++}Vớilờigọisquare(a)vớialàbiếnsẽsảnsinhrabiểuthứca++*a++vàkếtquảlàlàmthayđổigiátrịcủabiếnatớihailần.CònlờigọiCácmởrộngcủaC++ -3 2- Trờnghợpcáchàmcónhiềuthamsốýtởngchunglàphảitìmmộthàmphùhợpnhấtsovớitấtcảnhữnghàmcònlại.Đểđạtmụcđíchnày,chơngtrìnhdịchchọnchomỗithamsốcáchàmphùhợp(ởtấtcảcácmứcđộ).Trongsốcáchàmđợclựachọn,chơngtrìnhdịchchọnra(nếutồntạivàtồntạiduynhất)hàmsaochođốivớimỗiđốisốnóđạtđợcsựphùhợphơncảsovớicáchàmkhác.TrongtrờnghợpvẫncónhiềuhàmthoảmÃn,lỗibiêndịchxảyradochơngtrìnhdịchkhôngbiếtchọnhàmnàotrongsốcáchàmthỏamÃn.Đặcbiệtluýkhisửdụngđịnhnghĩachồnghàmcùngvớiviệckhaibáocáchàmvớithamsốcógiátrịngầmđịnhsẽđợctrìnhbàytrongmụctiếptheo.7.7.7.7.ThamThamThamThamssssốốốốngngngngầầầầmmmmđịđịđịđịnhnhnhnhtrongtrongtrongtrongllllờờờờiiiiggggọọọọiiiihhhhààààmmmmTaxétvídụsau:VVVVííííddddụụụụ2.132.132.132.13#include<iostream.h>voidmain(){intn=10,p=20;voidfct(int,int=12);//khaibáohàmvớimộtgiátrịngầmđịnhfct(n,p);//lờigọithôngthờng,cóhaithamsốfct(n);//lờigọichỉvớimộtthamsố//fct()sẽkhôngđợcchấpnhận}//khaibáobìnhthờngvoidfct(inta,intb){cout<<"thamsothunhat:"<<a<<"\n";cout<<"thamsothuhai:"<<b<<"\n";}thamsothunhat:10thamsothuhai:20thamsothunhat:10thamsothuhai:12Trongkhaibáocủafct()bêntronghàmmain():voidfct(int,int=12);CácmởrộngcủaC++ -4 1- 9.1Ghinhớ 389.2Cáclỗithờnggặp 399.3Mộtsốthóiquenlậptrìnhtốt 3910.Bàitập 39Bàitập2.1 39Bàitập2.2 39Bàitập2.3 40CácmởrộngcủaC++ -1 5- TrongC++,chỉcóchuyểnđổikiểungầmđịnhtừmộtkiểutrỏtuỳýthànhvoid*void*void*void*làchấpnhậnđợc,cònmuốnchuyểnđổingợclại,taphảithựchiệnchuyểnkiểutờngminhnhcáchviếtsauđây:gen=adj;adj=(int*)gen;2.2.2.2.CCCCáááácccckhkhkhkhảảảảnnnnăăăăngngngngvvvvàààào/rao/rao/rao/rammmmớớớớiiiiccccủủủủaaaa C++ C++ C++ C++Cáctiệníchvào/ra(hàmhoặcmacro)củathviệnCchuẩnđềucóthểsửdụngtrongC++.Đểsửdụngcáchàmnàychúngtachỉcầnkhaibáotệptiêuđềtrongđócóchứakhaibáohàmnguyênmẫucủacáctiệníchnày.Bêncạnhđó,C++còncàiđặtthêmcáckhảnăngvào/ramớidựatrênhaitoántử<<(xuất)và>>(nhập)vớicácđặctínhsauđây:6.đơngiảntrongsửdụng7.cókhảnăngmởrộngđốivớicáckiểumớitheonhucầucủangờilập trình. Trongtệptiêuđềiostream.hngờitađịnhnghĩahaiđốitợngcoutcoutcoutcoutvàcincincincintơngứngvớihaithiếtbịchuẩnra/vàođợcsửdụngcùngvới<<và>>.Thôngthờngtahiểucoutcoutcoutcoutlàmànhìnhcòncincincincinlàbànphím.2.12.12.12.1GhiGhiGhiGhiddddữữữữlilililiệệệệuuuullllêêêênnnnthithithithiếếếếttttbbbbịịịịrarararachuchuchuchuẩẩẩẩnnnn(m(m(m(màààànnnnhhhhìììình)nh)nh)nh)coutcoutcoutcoutTrongphầnnàytaxemxétmộtsốvídụminhhoạcáchsửdụngcoutcoutcoutcoutvà<<đểđathôngtinramànhình.VVVVííííddddụụụụ2.22.22.22.2Chơngtrìnhsauminhhoạcáchsửdụngcoutcoutcoutcoutđểđaramànhìnhmộtxâukýtự.#include<iostream.h>/*phảikhaibáokhimuốnsửdụngcout*/main(){cout<<"Welcome C++& quot;;}WelcomeC++<<làmộttoántửhaingôi,toánhạngởbêntráimôtảnơikếtxuấtthôngtin(cóthểlàmộtthiếtbịngoạivichuẩnhaylàmộttậptin),toánhạngbênphảicủa<<làmộtbiểuthứcnàođó.Trongchơngtrìnhtrên,câulệnhcout<<"Welcome C++& quot;đaramànhìnhxâukýtựWelcome C++ .CácmởrộngcủaC++ -3 1- return(min(min(a,b),c));}doublemin(doublea,doubleb){return(a>b?a:b);}charmin(chara,charb){return(a>b?a:b);}intmin(intn,int*t){intres=t[0];for(inti=1;i<n;i++)res=min(res,t[i]);returnres;}NhNhNhNhậậậậnnnnxxxxéééétttt16.Mộthàmcóthểgọiđếnhàmcùngtênvớinó(vídụnhhàm4,5gọihàm1).17.Trongtrờnghợpcócáchàmtrùngtêntrongchơngtrình,việcxácđịnhhàmnàođợcgọidochơngtrìnhdịchđảmnhiệmvàtuântheocácnguyêntắcsau:TrờnghợpcáchàmcómộtthamsốChơngtrìnhdịchtìmkiếmsựtơngứngnhiềunhấtcóthểđợc;cócácmứcđộtơngứngnhsau(theođộutiêngiảmdần):a)Tơngứngthậtsự:taphânbiệtcáckiểudữliệucơsởkhácnhauđồngthờiluýđếncảdấu.b)Tơngứngdữliệusốnhngcósựchuyểnđổikiểudữliệutựđộng(numericpromotion):charcharcharcharvàshortshortshortshort ... 40CácmởrộngcủaC++ -1 5- TrongC++,chỉcóchuyểnđổikiểungầmđịnhtừmộtkiểutrỏtuỳýthànhvoid*void*void*void*làchấpnhậnđợc,cònmuốnchuyểnđổingợclại,taphảithựchiệnchuyểnkiểutờngminhnhcáchviếtsauđây:gen=adj;adj=(int*)gen;2.2.2.2.CCCCáááácccckhkhkhkhảảảảnnnnăăăăngngngngvvvvàààào/rao/rao/rao/rammmmớớớớiiiiccccủủủủaaaa C++ C++ C++ C++Cáctiệníchvào/ra(hàmhoặcmacro)củathviệnCchuẩnđềucóthểsửdụngtrongC++.Đểsửdụngcáchàmnàychúngtachỉcầnkhaibáotệptiêuđềtrongđócóchứakhaibáohàmnguyênmẫucủacáctiệníchnày.Bêncạnhđó,C++còncàiđặtthêmcáckhảnăngvào/ramớidựatrênhaitoántử<<(xuất)và>>(nhập)vớicácđặctínhsauđây:6.đơngiảntrongsửdụng7.cókhảnăngmởrộngđốivớicáckiểumớitheonhucầucủangờilập trình. Trongtệptiêuđềiostream.hngờitađịnhnghĩahaiđốitợngcoutcoutcoutcoutvàcincincincintơngứngvớihaithiếtbịchuẩnra/vàođợcsửdụngcùngvới<<và>>.Thôngthờngtahiểucoutcoutcoutcoutlàmànhìnhcòncincincincinlàbànphím.2.12.12.12.1GhiGhiGhiGhiddddữữữữlilililiệệệệuuuullllêêêênnnnthithithithiếếếếttttbbbbịịịịrarararachuchuchuchuẩẩẩẩnnnn(m(m(m(màààànnnnhhhhìììình)nh)nh)nh)coutcoutcoutcoutTrongphầnnàytaxemxétmộtsốvídụminhhoạcáchsửdụngcoutcoutcoutcoutvà<<đểđathôngtinramànhình.VVVVííííddddụụụụ2.22.22.22.2Chơngtrìnhsauminhhoạcáchsửdụngcoutcoutcoutcoutđểđaramànhìnhmộtxâukýtự.#include<iostream.h>/*phảikhaibáokhimuốnsửdụngcout*/main(){cout<<"Welcome C++& quot;;}WelcomeC++<<làmộttoántửhaingôi,toánhạngởbêntráimôtảnơikếtxuấtthôngtin(cóthểlàmộtthiếtbịngoạivichuẩnhaylàmộttậptin),toánhạngbênphảicủa<<làmộtbiểuthứcnàođó.Trongchơngtrìnhtrên,câulệnhcout<<"Welcome C++& quot;đaramànhìnhxâukýtựWelcome C++ .CácmởrộngcủaC++ -3 1- return(min(min(a,b),c));}doublemin(doublea,doubleb){return(a>b?a:b);}charmin(chara,charb){return(a>b?a:b);}intmin(intn,int*t){intres=t[0];for(inti=1;i<n;i++)res=min(res,t[i]);returnres;}NhNhNhNhậậậậnnnnxxxxéééétttt16.Mộthàmcóthểgọiđếnhàmcùngtênvớinó(vídụnhhàm4,5gọihàm1).17.Trongtrờnghợpcócáchàmtrùngtêntrongchơngtrình,việcxácđịnhhàmnàođợcgọidochơngtrìnhdịchđảmnhiệmvàtuântheocácnguyêntắcsau:TrờnghợpcáchàmcómộtthamsốChơngtrìnhdịchtìmkiếmsựtơngứngnhiềunhấtcóthểđợc;cócácmứcđộtơngứngnhsau(theođộutiêngiảmdần):a)Tơngứngthậtsự:taphânbiệtcáckiểudữliệucơsởkhácnhauđồngthờiluýđếncảdấu.b)Tơngứngdữliệusốnhngcósựchuyểnđổikiểudữliệutựđộng(numericpromotion):charcharcharcharvàshortshortshortshort ... >int.int.int.int.c)CácchuyểnđổikiểuchuẩnđợcCvàC++chấpnhận.d)Cácchuyểnđổikiểudongờisửdụngđịnhnghĩa.Quátrìnhtìmkiếmbắtđầutừmứccaonhấtvàdừnglạiởmứcđầutiênchophéptìmthấysựphùhợp.Nếucónhiềuhàmphùhợpởcùngmộtmức,chơngtrìnhdịchđarathôngbáolỗidokhôngbiếtchọnhàmnàogiữacáchàmphùhợp. -1 3- ChChChChơơơơngngngng2222NhNhNhNhữữữữngngngngmmmmởởởởrrrrộộộộngngngngccccủủủủaaaa C++ C++ C++ C++Mụcđíchchơngnày:1.GiớithiệunhữngđiểmkhácbiệtchủyếugiữaCv C++ 2.CácđiểmmớicủaC++sovớiC(nhữngvấnđềcơbảnnhất)1.1.1.1.CCCCááááccccđđđđiiiiểểểểmmmmkhkhkhkhôôôôngngngngttttơơơơngngngngththththííííchchchchgigigigiữữữữaaaa C++ C++ C++ C++vvvvààààANSIANSIANSIANSICCCC1.11.11.11.1ĐịĐịĐịĐịnhnhnhnhnghnghnghnghĩĩĩĩaaaahhhhààààmmmmTrongđịnhnghĩahàm,ANSICchophéphaikiểukhaibáodòngtiêuđềcủahàm,trongkhiđóC++chỉchấpnhậnmộtcách:1.21.21.21.2KhaiKhaiKhaiKhaibbbbááááoooohhhhààààmmmmnguynguynguynguyêêêênnnnmmmmẫẫẫẫuuuuTrongANSIC,khisửdụngmộthàmchađợcđịnhnghĩatrớcđótrongcùngmộttệp,tacóthể:3.khôngcầnkhaibáo(khiđóngầmđịnhgiátrịtrảvềcủahàmlàint)4.chỉcầnkhaibáotênhàmvàgiátrịtrảvề,khôngcầndanhsáchkiểucủacácthamsố.5.khaibáohàmnguyênmẫu.VớiC++,chỉcóphơngphápthứ3làchấpnhậnđợc.Nóicáchkhác,mộtlờigọihàmchỉđợcchấpnhậnkhitrìnhbiêndịchbiếtđợckiểucủacácthamsố,kiểucủagiátrịtrảvề.Mỗikhitrìnhbiêndịchgặpmộtlờigọihàm,nósẽsosánhcáckiểucủacácđốisốđợctruyềnvớicácthamsốhìnhthứctơngứng.Trongtrờnghợpcósựkhácnhau,cóthểthựchiệnmộtsốchuyểnkiểutựđộngđểchohàmnhậnđợccódanhsáchcácthamsốđúngvớikiểuđÃđợckhaibáocủahàm.Tuynhiênphảituântheonguyêntắcchuyểnkiểutựđộngsauđây:charcharcharchar...
  • 29
  • 758
  • 5
Giáo trình C++ Đại Học Bách Khoa (phần 5) pdf

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

... Ngônng C++ -4 1- dữliệukhôngquantrọngđốivớingờisửdụng.Vớimộtđốitợngđiểm,ngờitachỉquantâmđếnviệccóthểthựchiệnđợcthaotácgìtrênnómàkhôngcầnbiếtcácthaotácđóđợcthựchiệnnhthếnào,cũngnhđiềugìxảyrabêntrongbảnthânđốitợngđó.Tathờngnóiđólàsựtrừutợnghoádữliệu(khicácchitiếtcàiđặtcụthểđợcgiấuđi).Đónggóicónhiềulợiíchgópphầnnângcaochấtlợngcủachơng trình. Nólàmchocôngviệcbảotrìchơngtrìnhthuậnlơihơnrấtnhiều:mộtsựthayđổicấutrúccủamộtđốitợngchỉảnhhởngtớibảnthânđốitợng;ngờisửdụngđốitợngkhôngcầnbiếtđếnthayđổinày(vớilậptrìnhcấutrúcthìngờilậptrìnhphảitựquảnlýsựthayđổiđó).Chẳnghạncóthểbiểudiễntoạđộmộtđiểmdớidạngsốthực,khiđóchỉcóngờithiếtkếđốitợngphảiquantâmđểsửalạiđịnhnghĩacủađốitợngtrongkhiđóngờisửdụngkhôngcầnhaybiếtvềđiềuđó,miễnlànhữngthayđổiđókhôngtácđộngđếnviệcsửdụngđốitợngđiểm.Tơngtựnhvậy,tacóthểbổsungthêmthuộctínhmàuvàmộtsốthaotáclênmộtđốitợngđiểm,đểcóđợcmộtđốitợngđiểmmàu.Rõrànglàđónggóichophépđơngiảnhoáviệcsửdụngmộtđốitợng.Tronglậptrìnhhớngđốitợng,đónggóichophépdữliệucủađốitợngđợcchelấpkhinhìntừbênngoài,nghĩalànếungờidùngmuốntácđộnglêndữliệucủađốitợngthìphảigửiđếnđốitợngcácthôngđiệp(message).ởđâycácphơngthứcđóngvaitròlàgiaodiệnbắtbuộcgiữacácđốitợngvàngờisửdụng.Tacónhậnxét:Lờigọiđếnmộtphơngthứclàtruyềnmộtthôngbáođếnchođốitợng.Cácthôngđiệpgửitớiđốitợngnàosẽgắnchặtvớiđốitợngđóvàchỉđốitợngnàonhậnđợcthôngđiệpmớiphảithựchiệntheothôngđiệpđó;chẳnghạncácđốitợngđiểmđộclậpvớinhau,vìvậythôngđiệpthayđổitoạđộđốitợngđiểmpchỉlàmảnhhởngđếncácthànhphầntoạđộtrongpchứkhôngthểthayđổiđợcnộidungcủamộtđốitợngđiểmqkhác.Môtảđốitợngđiểm{//dữliệuintx,y;//phơngthứcvoidinit(intox,intoy);voidmove(intdx,intdy);voiddisplay();};Hình3.1MôtảcácđốitợngđiểmNgônng C++ -5 1- Tấtnhiên,theonguyêntắcđónggói,khônggántrịchocácthànhphầndữliệucủađốitợngmộtcáchtrựctiếp.p.x=2;p.y=4;Hơnnữa,khôngthểthựchiệnlờigọitớihàmthànhphầnnếukhôngchỉrõđốitợngđợcthamchiếu.Chỉthị:init(5,2);tronghàmmainsẽcóthểgâylỗibiêndịchnếutrongchơngtrìnhkhôngcóhàmtựdovớitêninit.2.1.52.1.52.1.52.1.5PhPhPhPhạạạạmmmmvivivivillllớớớớppppPhạmvichỉraphầnchơngtrìnhtrongđócóthểtruyxuấtđếnmộtđốitợngnàođó.TrongCcóbốnkiểuphạmviliênquanđếncáchthứcvàvịtríkhaibáobiến:phạmvikhốilệnh,phạmvitệp,phạmvichơngtrìnhvàphạmvihàmnguyênmẫu,trongđóthờngdùngnhấtlàphạmvitoàncục(tệp,chơngtrình)vàphạmvicụcbộ(khốilệnh,hàm).Mụcđíchcủaphạmvilàđểkiểmsoátviệctruyxuấtđếncácbiến/hằng/hàm.Đểkiểmsoáttruynhậpđếncácthànhphần(dữliệu,hàm)củacáclớp, C++ arakháiniệmphạmvilớp.Tấtcảcácthànhphầncủamộtlớpsẽđợccoilàthuộcphạmvilớp;trongđịnhnghĩahàmthànhphầncủalớpcóthểthamchiếuđếnbấtkỳmộtthànhphầnnàokháccủacùnglớpđó.Tuântheoýtởngđónggói,C++coitấtcảcácthànhphầncủamộtlớpcóliênhệvớinhau.Ngoàira,C++cònchophépmởrộngphạmvilớpđếncáclớpconcháu,bạnbèvàhọhàng(Xemthêmchơng5-Kếthừavàcácmụctiếpsauđểhiểurõhơn).2.1.62.1.62.1.62.1.6TTTTừừừừkhokhokhokhoááááxxxxááááccccđịđịđịđịnhnhnhnhthuthuthuthuộộộộccccttttíííínhnhnhnhtruytruytruytruyxuxuxuxuấấấấttttTrongphầnnàytanóitớivaitròcủahaitừkhoáprivateprivateprivateprivatevàpublicpublicpublicpublic - dùngđểxácđịnhthuộctínhtruyxuấtcủacácthànhphầnlớp.Trongđịnhnghĩacủalớptacóthểxácđịnhkhảnăngtruyxuấtthànhphầncủamộtlớpnàođótừbênngoàiphạmvilớp.Tronglớppointcóhaithànhphầndữliệuvàbathànhphầnhàm.CácthànhphầndữliệuđợckhaibáovớinhÃnlàprivate,private,private,private,còncáchàmthànhvớinhÃnpublicpublicpublicpublic.privateprivateprivateprivatevàpublicpublicpublicpubliclàcáctừkhoáxácđịnhthuộctínhtruyxuất.Mọithànhphầnđợcliệtkêtrongphầnpublicpublicpublicpublicđềucóthểtruyxuấttrongbấtkỳhàmnào.NhữngNgônng C++ -8 3- Ngợclại,hàmthiếtlậpthựchiệnđồngthờihainhiệmvụ:tạođốitợngvàsaochépnộidungtừmộtđốitợngđÃcósangđốitợngmớitạorađó.Ngoàitìnhhuốngtrênđây,còncóhaitrờnghợpcầndùnghàmthiếtlậpsaochép:truyềnđốitợngchohàmbằngthamtrịhoặchàmtrảvềmộtđốitợngnhằmtạomộtđốitợnggiốnghệtmộtđốitợngcùnglớpđÃcótrớcđó.Trongphầnsauchúngtasẽcóvídụminhhoạchocáctrìnhbàynày.4.4.24.4.24.4.24.4.2HHHHààààmmmmthithithithiếếếếttttllllậậậậppppsaosaosaosaochchchchééééppppngngngngầầầầmmmmđịđịđịđịnhnhnhnhGiốngnhhàmthiếtlậpngầmđịnh(hàmthiếtlậpkhôngthamsố),nếukhôngđợcmôtảtờngminh,sẽcómộthàmthiếtlậpsaochépngầmđịnhdochơngtrìnhdịchcungcấpnhằmđảmbảotínhđúngđắncủachơngtrìnhtrongcáctìnhhuốngcầnđếnhàmthiếtlập.Nhvậy,trongkhaibáocủamộtlớpcóítnhấthaihàmthiếtlậpngầmđịnh:hàmthiếtlậpngầmđịnhvàhàmthiếtlậpsaochépngầmđịnh.Dolàmộthàmđợctạoratựđộngnênhàmthiếtlậpsaochépngầmđịnhcũngchỉthựchiệnnhữngthaotáctốithiểu(ngầmđịnh):tạogiátrịcủacácthuộctínhtrongđốitợngmớibằngcácgiátrịcủacácthuộctínhtơngứngtrongđốitợngcũ.Bạnđọccóthểxemlạiphần3củachơngđểhiểurõhơn.Nóichung,vớicáclớpkhôngkhaibáocácthànhphầndữliệuđộngthìchỉcầndùnghàmthiếtlậpsaochépngầmđịnhlàđủ.Vấnđềsẽkhácđikhicầnđếncácthaotácquảnlýbộnhớđộngtrongcácđốitợng.Trongtrờnghợpnàykhôngđợcdùnghàmthiếtlậpsaochépngầmđịnhmàphảigọihàmthiếtlậpsaochéptờngminh.4.4.34.4.34.4.34.4.3KhaiKhaiKhaiKhaibbbbááááoooovvvvààààđịđịđịđịnhnhnhnhnghnghnghnghĩĩĩĩaaaahhhhààààmmmmthithithithiếếếếttttllllậậậậppppsaosaosaosaochchchchééééppppttttờờờờngngngngminhminhminhminhDDDDạạạạngngngngccccủủủủaaaahhhhààààmmmmthithithithiếếếếttttllllậậậậppppsaosaosaosaochchchchééééppppXétcácđốitợngthuộclớppoint.Câulệnhpointq=p;sẽgọiđếnhàmthiếtlậpsaochép.Nhnhậnxéttrongphầntrêntacóthểviếttheocáchkhácnhsau:pointq(p);Từcáchviếttrêncóthểchorằngdạngcủahàmthiếtlậpsaochépcholớppointcóthểlà:Ngônng C++ -6 5- VVVVííííddddụụụụ3.73.73.73.7/*point5.cpp*//*point5.cpp*//*point5.cpp*//*point5.cpp*/#include<iostream.h>#include<conio.h>/*địnhnghĩalớppoint*/classpoint{/*khaibáocácthànhphầndữliệu*/intx;inty;public:/*khaibáocácthànhphầnhàm*/point(intox,intoy){x=ox;y=oy;}/*hàmthiếtlập*/voidmove(intdx,intdy);voiddisplay();};voidpoint::move(intdx,intdy){x+=dx;y+=dy;}voidpoint::display(){cout<<Toado:<<x<<""<<y<<"\n";}voidmain(){clrscr();pointa(5,2);/*Sửdụnghàmthiếtlập*/a.display();a.move (-2 ,4);a.display();Ngônng C++ -6 7- };pointa(1);/*Lỗivìthamsốkhôngphùhợpvớihàmthiếtlập*/pointb;/*Đúng,thamsốphùhợpvớihàmthiếtlậpkhôngthamsố*/pointc(2,3);/*Đúng,thamsốphùhợpvớihàmthiếtlậpthứhai,cóhaithamsố*/16.Hàmthiếtlậpcóthểđợckhaibáovớicácthamsốcógiátrịngầmđịnh.Xétvídụsau:/*Địnhnghĩalạilớppoint*/classpoint{intx,y;public:point(intox,intoy=0){x=ox;y=oy;}/*hàmthiếtlậpcóhaithamsố*/voidmove(int,int);voiddisplay();};pointa;/*Lỗi:khôngcóhàmthiếtlậpngầmđịnhhoặchàmthiếtlậpvớicácthamsốcógiátrịngầmđịnh*/pointb(1);//Đốisốthứhainhậngiátrị0pointc(2,3);//ĐúngNhậnxétTrongvídụtrên,chỉthị:pointb(1);cóthểđợcthaythếbằngcáchviếtkhácnhsau:pointb=1;Ngônng C++ -5 8- #include<iostream.h>#include<conio.h>classpoint{intx,y;public:/*địnhnghĩachồngcáchàmthànhphầninitvàdisplay*/voidinit();voidinit(int);voidinit(int,int);voiddisplay();voiddisplay(char*);};voidpoint::init(){x=y=0;}voidpoint::init(intabs){x=abs;y=0;}voidpoint::int(intabs,intord){x=abs;y=ord;}voidpoint::display(){cout<<"Toado:"<<x<<""<<y<<"\n";}voidpoint::display(char*mesg){cout<<mesg;Ng«nng C++ -5 4- cout<<"Dientichtamgiac:"<<dientich()<<"\n";switch(loaitg()){case1:cout<<"Tamgiacdeu\n";break;case2:cout<<"Tamgiacvuongcan\n";break;case3:cout<<"Tamgiaccan\n";break;case4:cout<<"Tamgiacvuong\n";break;default:cout<<"Tamgiacthuong\n";break;}}floattamgiac::dientich(){return(0.25*sqrt((a+b+c)*(a+b-c)*(a-b+c)*(-a+b+c)));}inttamgiac::loaitg(){if(a==b||b==c||c==a)if(a==b&&b==c)return1;elseif(a*a==b*b+c*c||b*b==a*a+c*c||c*c==a*a+b*b)return2;elsereturn3;elseif(a*a==b*b+c*c||b*b==a*a+c*c||c*c==a*a+b*b)return4;elsereturn5;}voidmain(){clrscr();tamgiactg;tg.nhap();tg.in();Ngônng C++ -4 2- Sovớilậptrìnhhớngđốitợngthuầntuý,cáccàiđặtcụthểcủađốitợngtrongC++linhđộnghơnmộtchút,bằngcáchchophépchỉchedấumộtbộphậndữliệucủađốitợngvàmởrộnghơnkhảnăngtruynhậpđếncácthànhphầnriêngcủađốitợng.Kháiniệmlớpchínhlàcơsởchocáclinhđộngnày.Lớplàmộtmôtảtrừutợngcủanhómcácđốitợngcócùngbảnchất.Trongmộtlớpngờitađaracácmôtảvềtínhchấtcủacácthànhphầndữliệu,cáchthứcthaotáctrêncácthànhphầnnày(hànhvicủacácđốitợng),ngợclạimỗimộtđốitợnglàmộtthểhiệncụthểchonhữngmôtảtrừutợngđó.Trongcácngônngữlậptrình,lớpđóngvaitròmộtkiểudữliệuđợcngờidùngđịnhnghĩavàviệctạoramộtđốitợngđợcvínhkhaibáomộtbiếncókiểulớp.2.2.2.2.LLLLớớớớpppp2.12.12.12.1KhaiKhaiKhaiKhaibbbbááááoooollllớớớớppppTừquanđiểmcủalậptrìnhcấutrúc,lớplàmộtkiểudữliệutựđịnhnghĩa.Tronglậptrìnhhớngđốitợng,chơngtrìnhnguồnđợcphânbốtrongkhaibáovàđịnhnghiÃcủacáclớp.Sauđâylàmộtvídụđiểnhìnhvềcúphápkhaibáolớp.Kinhnghiệmchothấymọikiểukhaibáokhácđềucóthểchuẩnhoáđểđavềdạngnày.Cácchitiếtliênquanđếnkhaibáolớpsẽlầnlợtđợcđềcậpđếntrongcácphầnsau.Đểdễhìnhdungxétmộtvídụvềkhaibáolớpđiểmtrongmặtphẳng.Trongvídụnàytacóđềcậpđếnmộtvàikhíacạnhliênquanđếnkhaibáolớp,đốitợngvàsửdụngchúng.classclassclassclass<tênlớp>{private:private:private:private:<khaibáocácthànhphầnriêngtrongtừngđốitợng>public:public:public:public:<khaibáocácthànhphầncôngcộngcủatừngđốitợng>};<địnhnghiÃcủacáchàmthànhphầnchađợcđịnhnghĩabêntrongkhaibáolớp> ... Ngônng C++ -4 1- dữliệukhôngquantrọngđốivớingờisửdụng.Vớimộtđốitợngđiểm,ngờitachỉquantâmđếnviệccóthểthựchiệnđợcthaotácgìtrênnómàkhôngcầnbiếtcácthaotácđóđợcthựchiệnnhthếnào,cũngnhđiềugìxảyrabêntrongbảnthânđốitợngđó.Tathờngnóiđólàsựtrừutợnghoádữliệu(khicácchitiếtcàiđặtcụthểđợcgiấuđi).Đónggóicónhiềulợiíchgópphầnnângcaochấtlợngcủachơng trình. Nólàmchocôngviệcbảotrìchơngtrìnhthuậnlơihơnrấtnhiều:mộtsựthayđổicấutrúccủamộtđốitợngchỉảnhhởngtớibảnthânđốitợng;ngờisửdụngđốitợngkhôngcầnbiếtđếnthayđổinày(vớilậptrìnhcấutrúcthìngờilậptrìnhphảitựquảnlýsựthayđổiđó).Chẳnghạncóthểbiểudiễntoạđộmộtđiểmdớidạngsốthực,khiđóchỉcóngờithiếtkếđốitợngphảiquantâmđểsửalạiđịnhnghĩacủađốitợngtrongkhiđóngờisửdụngkhôngcầnhaybiếtvềđiềuđó,miễnlànhữngthayđổiđókhôngtácđộngđếnviệcsửdụngđốitợngđiểm.Tơngtựnhvậy,tacóthểbổsungthêmthuộctínhmàuvàmộtsốthaotáclênmộtđốitợngđiểm,đểcóđợcmộtđốitợngđiểmmàu.Rõrànglàđónggóichophépđơngiảnhoáviệcsửdụngmộtđốitợng.Tronglậptrìnhhớngđốitợng,đónggóichophépdữliệucủađốitợngđợcchelấpkhinhìntừbênngoài,nghĩalànếungờidùngmuốntácđộnglêndữliệucủađốitợngthìphảigửiđếnđốitợngcácthôngđiệp(message).ởđâycácphơngthứcđóngvaitròlàgiaodiệnbắtbuộcgiữacácđốitợngvàngờisửdụng.Tacónhậnxét:Lờigọiđếnmộtphơngthứclàtruyềnmộtthôngbáođếnchođốitợng.Cácthôngđiệpgửitớiđốitợngnàosẽgắnchặtvớiđốitợngđóvàchỉđốitợngnàonhậnđợcthôngđiệpmớiphảithựchiệntheothôngđiệpđó;chẳnghạncácđốitợngđiểmđộclậpvớinhau,vìvậythôngđiệpthayđổitoạđộđốitợngđiểmpchỉlàmảnhhởngđếncácthànhphầntoạđộtrongpchứkhôngthểthayđổiđợcnộidungcủamộtđốitợngđiểmqkhác.Môtảđốitợngđiểm{//dữliệuintx,y;//phơngthứcvoidinit(intox,intoy);voidmove(intdx,intdy);voiddisplay();};Hình3.1MôtảcácđốitợngđiểmNgônng C++ -5 1- Tấtnhiên,theonguyêntắcđónggói,khônggántrịchocácthànhphầndữliệucủađốitợngmộtcáchtrựctiếp.p.x=2;p.y=4;Hơnnữa,khôngthểthựchiệnlờigọitớihàmthànhphầnnếukhôngchỉrõđốitợngđợcthamchiếu.Chỉthị:init(5,2);tronghàmmainsẽcóthểgâylỗibiêndịchnếutrongchơngtrìnhkhôngcóhàmtựdovớitêninit.2.1.52.1.52.1.52.1.5PhPhPhPhạạạạmmmmvivivivillllớớớớppppPhạmvichỉraphầnchơngtrìnhtrongđócóthểtruyxuấtđếnmộtđốitợngnàođó.TrongCcóbốnkiểuphạmviliênquanđếncáchthứcvàvịtríkhaibáobiến:phạmvikhốilệnh,phạmvitệp,phạmvichơngtrìnhvàphạmvihàmnguyênmẫu,trongđóthờngdùngnhấtlàphạmvitoàncục(tệp,chơngtrình)vàphạmvicụcbộ(khốilệnh,hàm).Mụcđíchcủaphạmvilàđểkiểmsoátviệctruyxuấtđếncácbiến/hằng/hàm.Đểkiểmsoáttruynhậpđếncácthànhphần(dữliệu,hàm)củacáclớp, C++ arakháiniệmphạmvilớp.Tấtcảcácthànhphầncủamộtlớpsẽđợccoilàthuộcphạmvilớp;trongđịnhnghĩahàmthànhphầncủalớpcóthểthamchiếuđếnbấtkỳmộtthànhphầnnàokháccủacùnglớpđó.Tuântheoýtởngđónggói,C++coitấtcảcácthànhphầncủamộtlớpcóliênhệvớinhau.Ngoàira,C++cònchophépmởrộngphạmvilớpđếncáclớpconcháu,bạnbèvàhọhàng(Xemthêmchơng5-Kếthừavàcácmụctiếpsauđểhiểurõhơn).2.1.62.1.62.1.62.1.6TTTTừừừừkhokhokhokhoááááxxxxááááccccđịđịđịđịnhnhnhnhthuthuthuthuộộộộccccttttíííínhnhnhnhtruytruytruytruyxuxuxuxuấấấấttttTrongphầnnàytanóitớivaitròcủahaitừkhoáprivateprivateprivateprivatevàpublicpublicpublicpublic - dùngđểxácđịnhthuộctínhtruyxuấtcủacácthànhphầnlớp.Trongđịnhnghĩacủalớptacóthểxácđịnhkhảnăngtruyxuấtthànhphầncủamộtlớpnàođótừbênngoàiphạmvilớp.Tronglớppointcóhaithànhphầndữliệuvàbathànhphầnhàm.CácthànhphầndữliệuđợckhaibáovớinhÃnlàprivate,private,private,private,còncáchàmthànhvớinhÃnpublicpublicpublicpublic.privateprivateprivateprivatevàpublicpublicpublicpubliclàcáctừkhoáxácđịnhthuộctínhtruyxuất.Mọithànhphầnđợcliệtkêtrongphầnpublicpublicpublicpublicđềucóthểtruyxuấttrongbấtkỳhàmnào.NhữngNgônng C++ -8 3- Ngợclại,hàmthiếtlậpthựchiệnđồngthờihainhiệmvụ:tạođốitợngvàsaochépnộidungtừmộtđốitợngđÃcósangđốitợngmớitạorađó.Ngoàitìnhhuốngtrênđây,còncóhaitrờnghợpcầndùnghàmthiếtlậpsaochép:truyềnđốitợngchohàmbằngthamtrịhoặchàmtrảvềmộtđốitợngnhằmtạomộtđốitợnggiốnghệtmộtđốitợngcùnglớpđÃcótrớcđó.Trongphầnsauchúngtasẽcóvídụminhhoạchocáctrìnhbàynày.4.4.24.4.24.4.24.4.2HHHHààààmmmmthithithithiếếếếttttllllậậậậppppsaosaosaosaochchchchééééppppngngngngầầầầmmmmđịđịđịđịnhnhnhnhGiốngnhhàmthiếtlậpngầmđịnh(hàmthiếtlậpkhôngthamsố),nếukhôngđợcmôtảtờngminh,sẽcómộthàmthiếtlậpsaochépngầmđịnhdochơngtrìnhdịchcungcấpnhằmđảmbảotínhđúngđắncủachơngtrìnhtrongcáctìnhhuốngcầnđếnhàmthiếtlập.Nhvậy,trongkhaibáocủamộtlớpcóítnhấthaihàmthiếtlậpngầmđịnh:hàmthiếtlậpngầmđịnhvàhàmthiếtlậpsaochépngầmđịnh.Dolàmộthàmđợctạoratựđộngnênhàmthiếtlậpsaochépngầmđịnhcũngchỉthựchiệnnhữngthaotáctốithiểu(ngầmđịnh):tạogiátrịcủacácthuộctínhtrongđốitợngmớibằngcácgiátrịcủacácthuộctínhtơngứngtrongđốitợngcũ.Bạnđọccóthểxemlạiphần3củachơngđểhiểurõhơn.Nóichung,vớicáclớpkhôngkhaibáocácthànhphầndữliệuđộngthìchỉcầndùnghàmthiếtlậpsaochépngầmđịnhlàđủ.Vấnđềsẽkhácđikhicầnđếncácthaotácquảnlýbộnhớđộngtrongcácđốitợng.Trongtrờnghợpnàykhôngđợcdùnghàmthiếtlậpsaochépngầmđịnhmàphảigọihàmthiếtlậpsaochéptờngminh.4.4.34.4.34.4.34.4.3KhaiKhaiKhaiKhaibbbbááááoooovvvvààààđịđịđịđịnhnhnhnhnghnghnghnghĩĩĩĩaaaahhhhààààmmmmthithithithiếếếếttttllllậậậậppppsaosaosaosaochchchchééééppppttttờờờờngngngngminhminhminhminhDDDDạạạạngngngngccccủủủủaaaahhhhààààmmmmthithithithiếếếếttttllllậậậậppppsaosaosaosaochchchchééééppppXétcácđốitợngthuộclớppoint.Câulệnhpointq=p;sẽgọiđếnhàmthiếtlậpsaochép.Nhnhậnxéttrongphầntrêntacóthểviếttheocáchkhácnhsau:pointq(p);Từcáchviếttrêncóthểchorằngdạngcủahàmthiếtlậpsaochépcholớppointcóthểlà:Ngônng C++ -6 5- VVVVííííddddụụụụ3.73.73.73.7/*point5.cpp*//*point5.cpp*//*point5.cpp*//*point5.cpp*/#include<iostream.h>#include<conio.h>/*địnhnghĩalớppoint*/classpoint{/*khaibáocácthànhphầndữliệu*/intx;inty;public:/*khaibáocácthànhphầnhàm*/point(intox,intoy){x=ox;y=oy;}/*hàmthiếtlập*/voidmove(intdx,intdy);voiddisplay();};voidpoint::move(intdx,intdy){x+=dx;y+=dy;}voidpoint::display(){cout<<Toado:<<x<<""<<y<<"\n";}voidmain(){clrscr();pointa(5,2);/*Sửdụnghàmthiếtlập*/a.display();a.move (-2 ,4);a.display();Ngônng C++ -6 7- };pointa(1);/*Lỗivìthamsốkhôngphùhợpvớihàmthiếtlập*/pointb;/*Đúng,thamsốphùhợpvớihàmthiếtlậpkhôngthamsố*/pointc(2,3);/*Đúng,thamsốphùhợpvớihàmthiếtlậpthứhai,cóhaithamsố*/16.Hàmthiếtlậpcóthểđợckhaibáovớicácthamsốcógiátrịngầmđịnh.Xétvídụsau:/*Địnhnghĩalạilớppoint*/classpoint{intx,y;public:point(intox,intoy=0){x=ox;y=oy;}/*hàmthiếtlậpcóhaithamsố*/voidmove(int,int);voiddisplay();};pointa;/*Lỗi:khôngcóhàmthiếtlậpngầmđịnhhoặchàmthiếtlậpvớicácthamsốcógiátrịngầmđịnh*/pointb(1);//Đốisốthứhainhậngiátrị0pointc(2,3);//ĐúngNhậnxétTrongvídụtrên,chỉthị:pointb(1);cóthểđợcthaythếbằngcáchviếtkhácnhsau:pointb=1;Ngônng C++ -5 8- #include<iostream.h>#include<conio.h>classpoint{intx,y;public:/*địnhnghĩachồngcáchàmthànhphầninitvàdisplay*/voidinit();voidinit(int);voidinit(int,int);voiddisplay();voiddisplay(char*);};voidpoint::init(){x=y=0;}voidpoint::init(intabs){x=abs;y=0;}voidpoint::int(intabs,intord){x=abs;y=ord;}voidpoint::display(){cout<<"Toado:"<<x<<""<<y<<"\n";}voidpoint::display(char*mesg){cout<<mesg;Ng«nng C++ -5 4- cout<<"Dientichtamgiac:"<<dientich()<<"\n";switch(loaitg()){case1:cout<<"Tamgiacdeu\n";break;case2:cout<<"Tamgiacvuongcan\n";break;case3:cout<<"Tamgiaccan\n";break;case4:cout<<"Tamgiacvuong\n";break;default:cout<<"Tamgiacthuong\n";break;}}floattamgiac::dientich(){return(0.25*sqrt((a+b+c)*(a+b-c)*(a-b+c)*(-a+b+c)));}inttamgiac::loaitg(){if(a==b||b==c||c==a)if(a==b&&b==c)return1;elseif(a*a==b*b+c*c||b*b==a*a+c*c||c*c==a*a+b*b)return2;elsereturn3;elseif(a*a==b*b+c*c||b*b==a*a+c*c||c*c==a*a+b*b)return4;elsereturn5;}voidmain(){clrscr();tamgiactg;tg.nhap();tg.in();Ngônng C++ -4 2- Sovớilậptrìnhhớngđốitợngthuầntuý,cáccàiđặtcụthểcủađốitợngtrongC++linhđộnghơnmộtchút,bằngcáchchophépchỉchedấumộtbộphậndữliệucủađốitợngvàmởrộnghơnkhảnăngtruynhậpđếncácthànhphầnriêngcủađốitợng.Kháiniệmlớpchínhlàcơsởchocáclinhđộngnày.Lớplàmộtmôtảtrừutợngcủanhómcácđốitợngcócùngbảnchất.Trongmộtlớpngờitađaracácmôtảvềtínhchấtcủacácthànhphầndữliệu,cáchthứcthaotáctrêncácthànhphầnnày(hànhvicủacácđốitợng),ngợclạimỗimộtđốitợnglàmộtthểhiệncụthểchonhữngmôtảtrừutợngđó.Trongcácngônngữlậptrình,lớpđóngvaitròmộtkiểudữliệuđợcngờidùngđịnhnghĩavàviệctạoramộtđốitợngđợcvínhkhaibáomộtbiếncókiểulớp.2.2.2.2.LLLLớớớớpppp2.12.12.12.1KhaiKhaiKhaiKhaibbbbááááoooollllớớớớppppTừquanđiểmcủalậptrìnhcấutrúc,lớplàmộtkiểudữliệutựđịnhnghĩa.Tronglậptrìnhhớngđốitợng,chơngtrìnhnguồnđợcphânbốtrongkhaibáovàđịnhnghiÃcủacáclớp.Sauđâylàmộtvídụđiểnhìnhvềcúphápkhaibáolớp.Kinhnghiệmchothấymọikiểukhaibáokhácđềucóthểchuẩnhoáđểđavềdạngnày.Cácchitiếtliênquanđếnkhaibáolớpsẽlầnlợtđợcđềcậpđếntrongcácphầnsau.Đểdễhìnhdungxétmộtvídụvềkhaibáolớpđiểmtrongmặtphẳng.Trongvídụnàytacóđềcậpđếnmộtvàikhíacạnhliênquanđếnkhaibáolớp,đốitợngvàsửdụngchúng.classclassclassclass<tênlớp>{private:private:private:private:<khaibáocácthànhphầnriêngtrongtừngđốitợng>public:public:public:public:<khaibáocácthànhphầncôngcộngcủatừngđốitợng>};<địnhnghiÃcủacáchàmthànhphầnchađợcđịnhnghĩabêntrongkhaibáolớp> ... Ngônng C++ -4 1- dữliệukhôngquantrọngđốivớingờisửdụng.Vớimộtđốitợngđiểm,ngờitachỉquantâmđếnviệccóthểthựchiệnđợcthaotácgìtrênnómàkhôngcầnbiếtcácthaotácđóđợcthựchiệnnhthếnào,cũngnhđiềugìxảyrabêntrongbảnthânđốitợngđó.Tathờngnóiđólàsựtrừutợnghoádữliệu(khicácchitiếtcàiđặtcụthểđợcgiấuđi).Đónggóicónhiềulợiíchgópphầnnângcaochấtlợngcủachơng trình. Nólàmchocôngviệcbảotrìchơngtrìnhthuậnlơihơnrấtnhiều:mộtsựthayđổicấutrúccủamộtđốitợngchỉảnhhởngtớibảnthânđốitợng;ngờisửdụngđốitợngkhôngcầnbiếtđếnthayđổinày(vớilậptrìnhcấutrúcthìngờilậptrìnhphảitựquảnlýsựthayđổiđó).Chẳnghạncóthểbiểudiễntoạđộmộtđiểmdớidạngsốthực,khiđóchỉcóngờithiếtkếđốitợngphảiquantâmđểsửalạiđịnhnghĩacủađốitợngtrongkhiđóngờisửdụngkhôngcầnhaybiếtvềđiềuđó,miễnlànhữngthayđổiđókhôngtácđộngđếnviệcsửdụngđốitợngđiểm.Tơngtựnhvậy,tacóthểbổsungthêmthuộctínhmàuvàmộtsốthaotáclênmộtđốitợngđiểm,đểcóđợcmộtđốitợngđiểmmàu.Rõrànglàđónggóichophépđơngiảnhoáviệcsửdụngmộtđốitợng.Tronglậptrìnhhớngđốitợng,đónggóichophépdữliệucủađốitợngđợcchelấpkhinhìntừbênngoài,nghĩalànếungờidùngmuốntácđộnglêndữliệucủađốitợngthìphảigửiđếnđốitợngcácthôngđiệp(message).ởđâycácphơngthứcđóngvaitròlàgiaodiệnbắtbuộcgiữacácđốitợngvàngờisửdụng.Tacónhậnxét:Lờigọiđếnmộtphơngthứclàtruyềnmộtthôngbáođếnchođốitợng.Cácthôngđiệpgửitớiđốitợngnàosẽgắnchặtvớiđốitợngđóvàchỉđốitợngnàonhậnđợcthôngđiệpmớiphảithựchiệntheothôngđiệpđó;chẳnghạncácđốitợngđiểmđộclậpvớinhau,vìvậythôngđiệpthayđổitoạđộđốitợngđiểmpchỉlàmảnhhởngđếncácthànhphầntoạđộtrongpchứkhôngthểthayđổiđợcnộidungcủamộtđốitợngđiểmqkhác.Môtảđốitợngđiểm{//dữliệuintx,y;//phơngthứcvoidinit(intox,intoy);voidmove(intdx,intdy);voiddisplay();};Hình3.1MôtảcácđốitợngđiểmNgônng C++ -5 1- Tấtnhiên,theonguyêntắcđónggói,khônggántrịchocácthànhphầndữliệucủađốitợngmộtcáchtrựctiếp.p.x=2;p.y=4;Hơnnữa,khôngthểthựchiệnlờigọitớihàmthànhphầnnếukhôngchỉrõđốitợngđợcthamchiếu.Chỉthị:init(5,2);tronghàmmainsẽcóthểgâylỗibiêndịchnếutrongchơngtrìnhkhôngcóhàmtựdovớitêninit.2.1.52.1.52.1.52.1.5PhPhPhPhạạạạmmmmvivivivillllớớớớppppPhạmvichỉraphầnchơngtrìnhtrongđócóthểtruyxuấtđếnmộtđốitợngnàođó.TrongCcóbốnkiểuphạmviliênquanđếncáchthứcvàvịtríkhaibáobiến:phạmvikhốilệnh,phạmvitệp,phạmvichơngtrìnhvàphạmvihàmnguyênmẫu,trongđóthờngdùngnhấtlàphạmvitoàncục(tệp,chơngtrình)vàphạmvicụcbộ(khốilệnh,hàm).Mụcđíchcủaphạmvilàđểkiểmsoátviệctruyxuấtđếncácbiến/hằng/hàm.Đểkiểmsoáttruynhậpđếncácthànhphần(dữliệu,hàm)củacáclớp, C++ arakháiniệmphạmvilớp.Tấtcảcácthànhphầncủamộtlớpsẽđợccoilàthuộcphạmvilớp;trongđịnhnghĩahàmthànhphầncủalớpcóthểthamchiếuđếnbấtkỳmộtthànhphầnnàokháccủacùnglớpđó.Tuântheoýtởngđónggói,C++coitấtcảcácthànhphầncủamộtlớpcóliênhệvớinhau.Ngoàira,C++cònchophépmởrộngphạmvilớpđếncáclớpconcháu,bạnbèvàhọhàng(Xemthêmchơng5-Kếthừavàcácmụctiếpsauđểhiểurõhơn).2.1.62.1.62.1.62.1.6TTTTừừừừkhokhokhokhoááááxxxxááááccccđịđịđịđịnhnhnhnhthuthuthuthuộộộộccccttttíííínhnhnhnhtruytruytruytruyxuxuxuxuấấấấttttTrongphầnnàytanóitớivaitròcủahaitừkhoáprivateprivateprivateprivatevàpublicpublicpublicpublic - dùngđểxácđịnhthuộctínhtruyxuấtcủacácthànhphầnlớp.Trongđịnhnghĩacủalớptacóthểxácđịnhkhảnăngtruyxuấtthànhphầncủamộtlớpnàođótừbênngoàiphạmvilớp.Tronglớppointcóhaithànhphầndữliệuvàbathànhphầnhàm.CácthànhphầndữliệuđợckhaibáovớinhÃnlàprivate,private,private,private,còncáchàmthànhvớinhÃnpublicpublicpublicpublic.privateprivateprivateprivatevàpublicpublicpublicpubliclàcáctừkhoáxácđịnhthuộctínhtruyxuất.Mọithànhphầnđợcliệtkêtrongphầnpublicpublicpublicpublicđềucóthểtruyxuấttrongbấtkỳhàmnào.NhữngNgônng C++ -8 3- Ngợclại,hàmthiếtlậpthựchiệnđồngthờihainhiệmvụ:tạođốitợngvàsaochépnộidungtừmộtđốitợngđÃcósangđốitợngmớitạorađó.Ngoàitìnhhuốngtrênđây,còncóhaitrờnghợpcầndùnghàmthiếtlậpsaochép:truyềnđốitợngchohàmbằngthamtrịhoặchàmtrảvềmộtđốitợngnhằmtạomộtđốitợnggiốnghệtmộtđốitợngcùnglớpđÃcótrớcđó.Trongphầnsauchúngtasẽcóvídụminhhoạchocáctrìnhbàynày.4.4.24.4.24.4.24.4.2HHHHààààmmmmthithithithiếếếếttttllllậậậậppppsaosaosaosaochchchchééééppppngngngngầầầầmmmmđịđịđịđịnhnhnhnhGiốngnhhàmthiếtlậpngầmđịnh(hàmthiếtlậpkhôngthamsố),nếukhôngđợcmôtảtờngminh,sẽcómộthàmthiếtlậpsaochépngầmđịnhdochơngtrìnhdịchcungcấpnhằmđảmbảotínhđúngđắncủachơngtrìnhtrongcáctìnhhuốngcầnđếnhàmthiếtlập.Nhvậy,trongkhaibáocủamộtlớpcóítnhấthaihàmthiếtlậpngầmđịnh:hàmthiếtlậpngầmđịnhvàhàmthiếtlậpsaochépngầmđịnh.Dolàmộthàmđợctạoratựđộngnênhàmthiếtlậpsaochépngầmđịnhcũngchỉthựchiệnnhữngthaotáctốithiểu(ngầmđịnh):tạogiátrịcủacácthuộctínhtrongđốitợngmớibằngcácgiátrịcủacácthuộctínhtơngứngtrongđốitợngcũ.Bạnđọccóthểxemlạiphần3củachơngđểhiểurõhơn.Nóichung,vớicáclớpkhôngkhaibáocácthànhphầndữliệuđộngthìchỉcầndùnghàmthiếtlậpsaochépngầmđịnhlàđủ.Vấnđềsẽkhácđikhicầnđếncácthaotácquảnlýbộnhớđộngtrongcácđốitợng.Trongtrờnghợpnàykhôngđợcdùnghàmthiếtlậpsaochépngầmđịnhmàphảigọihàmthiếtlậpsaochéptờngminh.4.4.34.4.34.4.34.4.3KhaiKhaiKhaiKhaibbbbááááoooovvvvààààđịđịđịđịnhnhnhnhnghnghnghnghĩĩĩĩaaaahhhhààààmmmmthithithithiếếếếttttllllậậậậppppsaosaosaosaochchchchééééppppttttờờờờngngngngminhminhminhminhDDDDạạạạngngngngccccủủủủaaaahhhhààààmmmmthithithithiếếếếttttllllậậậậppppsaosaosaosaochchchchééééppppXétcácđốitợngthuộclớppoint.Câulệnhpointq=p;sẽgọiđếnhàmthiếtlậpsaochép.Nhnhậnxéttrongphầntrêntacóthểviếttheocáchkhácnhsau:pointq(p);Từcáchviếttrêncóthểchorằngdạngcủahàmthiếtlậpsaochépcholớppointcóthểlà:Ngônng C++ -6 5- VVVVííííddddụụụụ3.73.73.73.7/*point5.cpp*//*point5.cpp*//*point5.cpp*//*point5.cpp*/#include<iostream.h>#include<conio.h>/*địnhnghĩalớppoint*/classpoint{/*khaibáocácthànhphầndữliệu*/intx;inty;public:/*khaibáocácthànhphầnhàm*/point(intox,intoy){x=ox;y=oy;}/*hàmthiếtlập*/voidmove(intdx,intdy);voiddisplay();};voidpoint::move(intdx,intdy){x+=dx;y+=dy;}voidpoint::display(){cout<<Toado:<<x<<""<<y<<"\n";}voidmain(){clrscr();pointa(5,2);/*Sửdụnghàmthiếtlập*/a.display();a.move (-2 ,4);a.display();Ngônng C++ -6 7- };pointa(1);/*Lỗivìthamsốkhôngphùhợpvớihàmthiếtlập*/pointb;/*Đúng,thamsốphùhợpvớihàmthiếtlậpkhôngthamsố*/pointc(2,3);/*Đúng,thamsốphùhợpvớihàmthiếtlậpthứhai,cóhaithamsố*/16.Hàmthiếtlậpcóthểđợckhaibáovớicácthamsốcógiátrịngầmđịnh.Xétvídụsau:/*Địnhnghĩalạilớppoint*/classpoint{intx,y;public:point(intox,intoy=0){x=ox;y=oy;}/*hàmthiếtlậpcóhaithamsố*/voidmove(int,int);voiddisplay();};pointa;/*Lỗi:khôngcóhàmthiếtlậpngầmđịnhhoặchàmthiếtlậpvớicácthamsốcógiátrịngầmđịnh*/pointb(1);//Đốisốthứhainhậngiátrị0pointc(2,3);//ĐúngNhậnxétTrongvídụtrên,chỉthị:pointb(1);cóthểđợcthaythếbằngcáchviếtkhácnhsau:pointb=1;Ngônng C++ -5 8- #include<iostream.h>#include<conio.h>classpoint{intx,y;public:/*địnhnghĩachồngcáchàmthànhphầninitvàdisplay*/voidinit();voidinit(int);voidinit(int,int);voiddisplay();voiddisplay(char*);};voidpoint::init(){x=y=0;}voidpoint::init(intabs){x=abs;y=0;}voidpoint::int(intabs,intord){x=abs;y=ord;}voidpoint::display(){cout<<"Toado:"<<x<<""<<y<<"\n";}voidpoint::display(char*mesg){cout<<mesg;Ng«nng C++ -5 4- cout<<"Dientichtamgiac:"<<dientich()<<"\n";switch(loaitg()){case1:cout<<"Tamgiacdeu\n";break;case2:cout<<"Tamgiacvuongcan\n";break;case3:cout<<"Tamgiaccan\n";break;case4:cout<<"Tamgiacvuong\n";break;default:cout<<"Tamgiacthuong\n";break;}}floattamgiac::dientich(){return(0.25*sqrt((a+b+c)*(a+b-c)*(a-b+c)*(-a+b+c)));}inttamgiac::loaitg(){if(a==b||b==c||c==a)if(a==b&&b==c)return1;elseif(a*a==b*b+c*c||b*b==a*a+c*c||c*c==a*a+b*b)return2;elsereturn3;elseif(a*a==b*b+c*c||b*b==a*a+c*c||c*c==a*a+b*b)return4;elsereturn5;}voidmain(){clrscr();tamgiactg;tg.nhap();tg.in();Ngônng C++ -4 2- Sovớilậptrìnhhớngđốitợngthuầntuý,cáccàiđặtcụthểcủađốitợngtrongC++linhđộnghơnmộtchút,bằngcáchchophépchỉchedấumộtbộphậndữliệucủađốitợngvàmởrộnghơnkhảnăngtruynhậpđếncácthànhphầnriêngcủađốitợng.Kháiniệmlớpchínhlàcơsởchocáclinhđộngnày.Lớplàmộtmôtảtrừutợngcủanhómcácđốitợngcócùngbảnchất.Trongmộtlớpngờitađaracácmôtảvềtínhchấtcủacácthànhphầndữliệu,cáchthứcthaotáctrêncácthànhphầnnày(hànhvicủacácđốitợng),ngợclạimỗimộtđốitợnglàmộtthểhiệncụthểchonhữngmôtảtrừutợngđó.Trongcácngônngữlậptrình,lớpđóngvaitròmộtkiểudữliệuđợcngờidùngđịnhnghĩavàviệctạoramộtđốitợngđợcvínhkhaibáomộtbiếncókiểulớp.2.2.2.2.LLLLớớớớpppp2.12.12.12.1KhaiKhaiKhaiKhaibbbbááááoooollllớớớớppppTừquanđiểmcủalậptrìnhcấutrúc,lớplàmộtkiểudữliệutựđịnhnghĩa.Tronglậptrìnhhớngđốitợng,chơngtrìnhnguồnđợcphânbốtrongkhaibáovàđịnhnghiÃcủacáclớp.Sauđâylàmộtvídụđiểnhìnhvềcúphápkhaibáolớp.Kinhnghiệmchothấymọikiểukhaibáokhácđềucóthểchuẩnhoáđểđavềdạngnày.Cácchitiếtliênquanđếnkhaibáolớpsẽlầnlợtđợcđềcậpđếntrongcácphầnsau.Đểdễhìnhdungxétmộtvídụvềkhaibáolớpđiểmtrongmặtphẳng.Trongvídụnàytacóđềcậpđếnmộtvàikhíacạnhliênquanđếnkhaibáolớp,đốitợngvàsửdụngchúng.classclassclassclass<tênlớp>{private:private:private:private:<khaibáocácthànhphầnriêngtrongtừngđốitợng>public:public:public:public:<khaibáocácthànhphầncôngcộngcủatừngđốitợng>};<địnhnghiÃcủacáchàmthànhphầnchađợcđịnhnghĩabêntrongkhaibáolớp> Ngônng C++ -7 2- a.display();a.move (-2 ,4);a.display();pointb[10];/*Trongtrờnghợpnàycácđốitợngthànhphầncủabđợctạoranhờhàmthiếtlậpđợcgọivớihaithamsốcógiátrịngầmđịnhlà1và0.*/getch();}4.1.44.1.44.1.44.1.4ConConConContrtrtrtrỏỏỏỏđốđốđốđốiiiittttợợợợngngngngContrỏđốitợngđợckhaibáonhsau:point*ptr;Contrỏđốitợngcóthểnhậngiátrịlàđịachỉcủacácđốitợngcócùngkiểulớp:ptr=&a;Khiđócóthểgọicáchàmthànhphầncủalớppointthôngquacontrỏnhsau:ptr->display();ptr->move (-2 ,3);Khidùngtoántửnewnewnewnewcấpphátmộtđốitợngđộng,hàmthiếtlậpcũngđợcgọi,dovậycầncungcấpdanhsáchcácthamsố.Chẳnghạn,giảsửtronglớppointcómộthàmthiếtlậphaithamsố,khiđócâulệnhsau:ptr=newpoint(3,2);sẽxincấpphátmộtđốitợngđộngvớihaithànhphầnxvàynhậngiátrịtơngứnglà2và3.Kếtquảnàyđợcminhchứngqualờigọihàm:ptr->display();Toado:23Ngônng C++ -4 9- classpoint{/*khaibáocácthànhphầndữliệuprivate*/private:intx,y;/*khaibáocáchàmthànhphầnpublic*/public:/*Địnhnghĩahàmthànhphầnbêntrongkhaibáolớp*/voidinit(intox,intoy);voidmove(intdx,intdy);voiddisplay();};#endifTệpchơngtrìnhnguồn/*point2.cpp*//*point2.cpp*//*point2.cpp*//*point2.cpp*//*Tậptinchơngtrình,địnhnghĩavàsửdụngcáchàmthànhphầntronglớppointđợckhaibáotrongtậptintiêuđềpoint.h*/#includepoint.h/*chènđịnhnghĩalớppointvàochơngtrình*/#include<conio.h>/*địnhnghĩacáchàmthànhphầnbênngoàikhaibáolớp*/voidpoint::init(intox,intoy){cout<<"Hamthanhphaninit\n";x=ox;y=oy;/*x,ylàcácthànhphầncủađốitợnggọihàmthànhphần*/}voidpoint::move(intdx,intdy){cout<<"Hamthanhphanmove\n";x+=dx;y+=dy;}Ngônng C++ -4 8- pointp;p.init(2,4);/*gọihàmthànhphầntừđốitợng*/p.display();p.move(1,2);p.display();getch();}HamthanhphaninitHamthanhphandisplayToado:24HamthanhphanmoveHamthanhphandisplayToado:36Khiđịnhnghĩahàmthànhphầnởngoàilớp,dòngtiêuđềcủahàmthànhphầnphảichứatêncủalớpcóhàmlàthànhviêntiếptheolàtoántửđịnhphạmvi::.Đólàcáchđểphânbiệthàmthànhphầnvớicáchàmtựdo,đồngthờicònchophéphailớpkhácnhaucóthểcócáchàmthànhphầncùngtên.Cóthểđặtđịnhnghĩahàmthànhphầntrongcùngtậptinkhaibáolớphoặctrongmộttậptinkhác.Vídụsauđâysauđâylàmộtcảibiênkháctừpoint.cpp,trongđótađặtriêngkhaibáolớppointtrongmộttệptiêuđề.Tệptiêuđềsẽđợcthamchiếutớitrongtệpchơngtrìnhpoint2.cppchứađịnhnghĩacáchàmthànhphầncủalớppoint.VVVVííííddddụụụụ3.33.33.33.3Tệptiêuđề/*point.h*//*point.h*//*point.h*//*point.h*//*đâylàtậptintiêuđềkhaibáolớppointđợcgộpvàotệppoint2.cpp*/#ifndefpoint_h#definepoint_h#include<iostream.h>Ngônng C++ -5 0- voidpoint::display(){cout<<"Hamthanhphandisplay\n";cout<<"Toado:"<<x<<""<<y<<"\n";}voidmain(){clrscr();pointp;p.init(2,4);/*gọihàmthànhphầntừđốitợng*/p.display();p.move(1,2);p.display();getch();}HamthanhphaninitHamthanhphandisplayToado:24HamthanhphanmoveHamthanhphandisplayToado:362.1.42.1.42.1.42.1.4ThamThamThamThamssssốốốốngngngngầầầầmmmmđịđịđịđịnhnhnhnhtrongtrongtrongtrongllllờờờờiiiiggggọọọọiiiihhhhààààmmmmththththàààànhnhnhnhphphphphầầầầnnnnởđâykhôngnênnhầmlẫnkháiniệmnàyvớilờigọihàmvớithamsốcógiátrịngầmđịnh.Lờigọihàmthànhphầnluôncómộtvàchỉmộtthamsốngầmđịnhlàđốitợngthựchiệnlờigọihàm.Nhthếcácbiếnx,ytrongđịnhnghĩacủacáchàmpoint::init(),point::display(),haypoint::move()chínhlàcácbiếnthểhiệncủađốitợngdùnglàmthamsốngầmđịnhtronglờigọihàm.Dovậylờigọihàmthànhphần:p.init(2,4)sẽgán2chop.xcònp.ysẽcógiátrị4.Ngônng C++ -8 4- point(point);hoặcpoint(point&);Tanhậnthấydạngthứnhấtkhôngdùngđợcvìviệcgọinóđòihỏiphảitruyềnchohàmmộtđốitợngnhmộtthamtrị,dođógâyrađệquyvôhạnlần.VớidạngthứhaitađÃthiếtlậpmộtthamchiếutớiđốitợngnhmộtthamsốhìnhthứctruyềnchohàm,nêncóthểchấpnhậnđợc.Dạngkhaibáocủahàmthiếtlậplà:trongđótừkhoáconsttrongkhaibáothamsốhìnhthứcchỉnhằmngăncấmmọithayđổinộidungcủathamsốtruyềnchohàm.Chơngtrìnhpoint10.cppsauđâybổsungthêmhàmthiếtlậpsaochépvàolớppoint.VVVVííííddddụụụụ3.143.143.143.14/*point10.cpp*//*point10.cpp*//*point10.cpp*//*point10.cpp*/#include<conio.h>#include<iostream.h>/*địnhnghĩalớppoint*/classpoint{/*khaibáocácthànhphầndữliệu*/intx;inty;public:/*khaibáocácthànhphầnhàm*/point(intox=1,intoy=0){cout<<"Taodoituong:"<<this<<endl;cout<<"Dunghamthietlaphaithamso\n";point(point&);hoặcpoint(constpoint&);Ng«nng C++ -8 5- x=ox;y=oy;}/*HµmthiÕtlËpsaochÐp*/point(point&p){cout<<"Taodoituong:"<<this<<endl;cout<<"Dunghamthietlapsaochep\n";x=p.x;y=p.y;}voidmove(intdx,intdy){x+=dx;y+=dy;}voiddisplay();};voidpoint::display(){cout<<"Toado:"<<x<<""<<y<<"\n";}pointfct(pointa){pointb=a;b.move(2,3);returnb;}voidmain(){clrscr();pointa(5,2);a.display();pointb=fct(a);b.display();getch();Ng«nng C++ -7 9- for(i=0;i<n;i++){cout<<"Toadothu"<<i+1<<":";cin>>v[i];}}vector::vector(intsize){inti;cout<<"Sudunghamthietlap1thamso\n";cout<<"Taodoituongtai"<<this<<endl;n=size;cout<<"Sochieu:"<<size<<endl;v=newfloat[n];cout<<"Xincapphatvungbonho"<<n<<"sothuctai"<<v<<endl;for(i=0;i<n;i++){cout<<"Toadothu"<<i+1<<":";cin>>v[i];}}vector::vector(intsize,float*a){inti;cout<<"Sudunghamthietlap2thamso\n";cout<<"Taodoituongtai"<<this<<endl;n=size;cout<<"Sochieu:"<<n<<endl;v=newfloat[n];cout<<"Xincapphatvungbonho"<<n<<"sothuctai"<<v<<endl;for(i=0;i<n;i++)Ngônng C++ -7 8- 4.34.34.34.3SSSSựựựựccccầầầầnnnnthithithithiếếếếttttccccủủủủaaaaccccáááácccchhhhààààmmmmthithithithiếếếếttttllllậậậậppppvvvvààààhuhuhuhuỷỷỷỷbbbbỏỏỏỏ-l-l-l-lớớớớppppvectorvectorvectorvectortrongtrongtrongtrongkhkhkhkhôôôôngngngnggiangiangiangiannnnnchichichichiềềềềuuuuTrênthựctế,vớicáclớpkhôngcócácthànhphầndữliệuđộngchỉcầnsửdụnghàmthiếtlậpvàhuỷbỏngầmđịnhlàđủ.Hàmthiếtlậpvàhuỷbỏdongờilậptrìnhtạorarấtcầnthiếtkhicáclớpchứacácthànhphầndữliệuđộng.KhitạođốitợnghàmthiếtlậpđÃxincấpphátmộtkhốibộnhớđộng,dođóhàmhuỷbỏphảigiảiphóngvùngnhớđÃđợccấppháttrớcđó.Vídụsauđâyminhhoạvaitròcủahàmhuỷbỏtrongtrờnghợplớpcócácthànhphầncấpphátđộng.VVVVííííddddụụụụ3.133.133.133.13/*vector.cpp*//*vector.cpp*//*vector.cpp*//*vector.cpp*/#include<iostream.h>#include<conio.h>classvector{intn;//sốchiềufloat*v;//vùngnhớtoạđộpublic:vector();//Hàmthiếtlậpkhôngthamsốvector(intsize);//Hàmthiếtlậpmộtthamsốvector(intsize,float*a);~vector();//Hàmhuỷbỏ,luônluônkhôngcóthamsốvoiddisplay();};vector::vector(){inti;cout<<"Taodoituongtai"<<this<<endl;cout<<"Sochieu:";cin>>n;v=newfloat[n];cout<<"Xincapphatvungbonho"<<n<<"sothuctai"<<v<<endl;ChChChChơơơơngngngng3333đốđốđốđốiiiittttợợợợngngngngvvvvààààllllớớớớpppp(Object(Object(Object(Object&&&&Class)Class)Class)Class)Mụcđíchchơngnày:1.Kháiniệmvềđónggóidữliệu.2.Khaibáovàsửdụngmộtlớp.3.Khaibáovàsửdụngđốitợng,contrỏđốitợng,thamchiếuđốitợng.4.Hàmthiếtlậpvàhàmhuỷbỏ.5.Khaibáovàsửdụnghàmthiếtlậpsaochép.6.Vaitròcủahàmthiếtlậpngầmđịnh.1.1.1.1.ĐốĐốĐốĐốiiiittttợợợợngngngngĐốitợnglàmộtkháiniệmtronglậptrìnhhớngđốitợngbiểuthịsựliênkếtgiữadữliệuvàcácthủtục(gọilàcácphơngthức)thaotáctrêndữliệuđó.Tacócôngthứcsau:ởđâychúngtahiểurằngđốitợngchínhlàcôngcụhỗtrợchosựđónggói.Sựđónggóilàcơchếliênkếtcáclệnhthaotácvàdữliệucóliênquan,giúpchocảhaiđợcantoàntránhđợcsựcanthiệptừbênngoàivàviệcsửdụngsai.Nhìnchungđịnhnghĩamộtđốitợngphứctạphơnsovớiđịnhnghĩacácbiếncấutrúcthôngthờng,bởilẽngoàiviệcmôtảcácthànhphầndữliệu,tacònphảixácđịnhđợccácthaotáctácđộnglênđốitợngđó.Hình2.1môtảcácđốitợngđiểmtrênmặtphẳng:Mỗiđốitợngđợcxácđịnhbởihaithànhphầntoạđộđợcbiểudiễnbởihaibiếnnguyên.Cácthaotáctácđộnglênđiểmbaogồmviệcxácđịnhtoạđộmộtđiểmtrênmặtphẳngtoạđộ(thểhiệnbằngviệcgángiátrịchohaithànhphầntoạđộ),thayđổitoạđộvàhiểnthịkếtquảlêntrênmặtphẳngtoạđộ(tơngtựnhviệcchấmđiểmtrênmặtphẳngđó).Lợiíchcủaviệcđónggóilàkhinhìntừbênngoài,mộtđốitợngchỉđợcbiếttớibởicácmôtảvềcácphơngthứccủanó,cáchthứccàiđặtcácĐốĐốĐốĐốiiiittttợợợợngngngng====DDDDữữữữlilililiệệệệu+Phu+Phu+Phu+PhơơơơngngngngththththứứứứccccNg«nng C++ -8 9- inti;cout<<"Doituongtai:"<<this<<endl;cout<<"Sochieu:"<<n<<endl;for(i=0;i<n;i++)cout<<v[i]<<"";cout<<"\n";}voidmain(){clrscr();vectors1;//gäihµmthiÕtlËpkh«ngthamsès1.display();vectors2(4);//4gi¸trÞs2.display();floata[3]={1,2,3};vectors3(3,a);s3.display();vectors4=s1;//hµmthiÕtlËpsaochÐps4.display();getch();}Taodoituongtai0xfff2Sochieu:3Xincapphatvungbonho3sothuctai0x142cToadothu1:1Toadothu2:2Toadothu3:3Doituongtai:0xfff2Sochieu:3123Ng«nng C++ -8 1- Toadothu1:2Toadothu2:3Toadothu3:2Doituongtai:0xfff2Sochieu:3232Sudunghamthietlap1thamsoTaodoituongtai0xffeeSochieu:4Xincapphatvungbonho4sothuctai0x13dcToadothu1:3Toadothu2:2Toadothu3:3Toadothu4:2Doituongtai:0xffeeSochieu:43232Sudunghamthietlap2thamsoTaodoituongtai0xffeaSochieu:3Xincapphatvungbonho3sothuctai0x13f0Doituongtai:0xffeaSochieu:3123Doituongtai:0xfff2Sochieu:3232Giaiphong0x13f0cuadoituongtai0xffeaNgônng C++ -6 9- voiddisplay();};/*phânbiệtcáchàmthànhphầnvớicáchàmthôngthờngnhờtênlớpvàtoántử::*/voidpoint::move(intdx,intdy){x+=dx;y+=dy;}voidpoint::display(){cout<<Toado:<<x<<""<<y<<"\n";}voidmain(){pointa(5,2);//OKa.display();a.move (-2 ,4);a.display();pointb[10];//lỗivìkhôngcungcấpthôngsốcầnthiếtchohàmthiếtlập}Trongchơngtrìnhpoint6.cpp,lỗixảyravìtamuốntạotamờiđốitợngnhngkhôngcungcấpđủcácthamsốchohàmthiếtlậpcónhđÃđịnhnghĩa(ởđâytachađềcậpđếnhàmthiếtlậpsaochépngầmđịnh,nósẽđợctrìnhbàytrongphầnsau).Giảiquyếttìnhhuốngnàybằnghaicách:hoặcbỏluônhàmthiếtlậphaithamsốtrongkhaibáolớpnhngkhiđó,khaibáocủađốitợngasẽkhôngcònđúngnữa.Dovậytathờngsửdụnggiảiphápđịnhnghĩathêmmộthàmthiếtlậpkhôngthamsố:b.ĐịnhnghiÃhàmthiếtlậpkhôngthamsốVVVVííííddddụụụụ3.93.93.93.9/*point7.cpp*//*point7.cpp*//*point7.cpp*//*point7.cpp*/#include<iostream.h>#include<conio.h>classpoint{Ngônng C++ -7 6- };test::test(intn){num=n;cout<<line++<<.;cout<<"++Goihamthietlapvoinum="<<num<<"\n";}test::~test(){cout<<line++<<.;cout<<"...
  • 85
  • 742
  • 3
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 5 5- z1=6Goifloat()chocomplexGoifloat()chocomplexz2=8Khigặpbiểuthứcdạnga+3vớiphéptoán+đợcđịnhnghĩavớicáctoánhạngcókiểulớpcomplexvàsốthực,chơngtrìnhdịchtrớchếtđitìmxemđÃcómộttoántử+đợcđịnhnghĩachồngtơngứngvớicáckiểudữliệucủacáctoánhạngnàyhaycha.Trongtrờnghợpnàyvìkhôngcó,nênchơngtrìnhdịchsẽchuyểnđổikiểudữliệucủacáctoánhạngđểphùhợpvớimộttrongsốcácphéptoánđÃđịnhnghĩa,cụthểlàchuyểnđổitừđốitợngasangfloatfloatfloatfloat.6.26.26.26.2HHHHààààmmmmtotototoáááánnnnttttửửửửchuychuychuychuyểểểểnnnnđổđổđổđổiiiikikikikiểểểểuuuuccccơơơơssssởởởởsangsangsangsangkikikikiểểểểuuuullllớớớớppppTrởlạichơngtrìnhcomplex6.cpp,tacóthểthựchiệncácchỉthịkiểunh:complexe=10;hoặca=1;Chỉthịthứnhấtnhằmtạomộtđốitợngtạmthờicókiểucomplextơngứngvớiphầnthựcbằng10,phầnảobằng0rồisaochépsangđốitợngemớiđợckhaibáo.Trongchỉthịthứhai,cũngcómộtđốitợngtạmthờikiểucomplexđợctạoravànộidungcủanó(phầnthực1,phầnảo0)đợcgánchoa.Nhvậy,trongcảhaitrờnghợpđềuphảigọitớihàmthiếtlậpmộtthamsốcủalớpcomplex.Tơngtự,nếucóhàmfct()vớikhaibáo:fct(complex)thìlờigọifct(4)sẽđòihỏiphảichuyểnđổitừgiátrịnguyên4thànhmộtđốitợngtạmthờicókiểucomplex,đểtruyềnchofct().Sauđâylàchơngtrìnhnhậnđợcdosửađổitừcomplex6.cpp.VVVVííííddddụụụụ4.144.144.144.14/*complex9.cpp*//*complex9.cpp*//*complex9.cpp*//*complex9.cpp*/Địnhnghĩatoántửtrênlớp -1 3 7- Sochieu:4Nhapcactoadocuas1Toadothu1:2Toadothu2:3Toadothu3:2Toadothu4:3Thongtinvevectors1Sochieu:42323Thongtinvevectors2Sochieu:42323NhNhNhNhậậậậnnnnxxxxéééétttt11.Nhờgiátrịtrảvềcủahàmoperatoroperatoroperatoroperator[]làthamchiếuđếnmộtthànhphầntoạđộcủavùngnhớđộngnêntacóthểđọc/ghicácthànhphầntoạđộcủamỗiđốitợngvector.Nhvậycóthểsửdụngcácđốitợngvectorgiốngnhcácbiếnmảng.Trongvídụtrênchúngtacũngkhôngcầnđếnhàmthànhphầnvector::display()đểinracácthôngtincủacácđốitợng.12.Cóthểcảitiếnhàmtoántửoperatoroperatoroperatoroperator[]bằngcáchbổsungthêmphầnkiểmtratrànchỉsố.5.35.35.35.3ĐịĐịĐịĐịnhnhnhnhnghnghnghnghĩĩĩĩaaaachchchchồồồồngngngng<<<<<<<<vvvvàààà>>>>>>>>Cóthểđịnhnghĩachồnghaitoántửvào/ra<<và>>chophépcácđốitợngđứngbênphảichúngkhithựchiệncácthaotácvàora.Chơngtrìnhsauđaramộtcáchđịnhnghĩachồnghaitoántửnày.VVVVííííddddụụụụ4.84.84.84.8#include<iostream.h>#include<conio.h>#include<math.h>classcomplex{§ÞnhnghÜato¸ntötrªnlíp -1 2 3- real=-real;image=-image;}complexoperator+(complexb){complexc;c.real=real+b.real;c.image=image+b.image;returnc;}friendcomplexoperator+(floatx,complexb);};complexoperator+(floatx,complexb){cout<<"Goitoioperator+(float,complex)\n";complexc;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=";Địnhnghĩatoántửtrênlớp -1 3 5- inti;cout<<"Sochieu:";cin>>n;v=newfloat[n];}vector::vector(vector&b){inti;v=newfloat[n=b.n];for(i=0;i<n;i++)v[i]=b.v[i];}vector::~vector(){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;Địnhnghĩatoántửtrênlớp -1 2 5- (iii)haiphéptoán++và ... Đị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:6Goifloat()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.26.1.26.1.26.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:6Goifloat()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.26.1.26.1.26.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 ÁN TRƯỜNG ĐẠI HỌC BÁCH KHOA ĐƠN VỊ ĐO ÁP SUẤT pdf

GIÁO ÁN TRƯỜNG ĐẠI HỌC BÁCH KHOA ĐƠN VỊ ĐO ÁP SUẤT pdf

... ;iiiVnrVn11niirTRƯỜNG ĐẠI HỌC BÁCH KHOA TPHCM9Biểu diễn các quá trình trên đồ thị p - vTRƯỜNG ĐẠI HỌC BÁCH KHOA TPHCM10Biểu diễn các quá trình trên đồ thị T - sTRƯỜNG ĐẠI HỌC BÁCH KHOA TPHCMQuá trình ... t1), (J/kg)12v12TTlncsss v = const2211pTpTTRƯỜNG ĐẠI HỌC BÁCH KHOA TPHCMVí dụ 1Ví dụ 2TRƯỜNG ĐẠI HỌC BÁCH KHOA TPHCM3Mối quan hệ giữa thành phần khối lượng givà thành phần ... củaquá trình. TRƯỜNG ĐẠI HỌC BÁCH KHOA TPHCMp = const2211vTvTCông thay đổi thể tích : w12= p(v2– v1), (J/kg)  W12= p(V2– V1) , (J)Công kỹ thuật :wkt12= 0Nhiệt của quá trình...
  • 12
  • 630
  • 3
TÀI LIỆU HƯỚNG DẪN ĐỒ ÁN TỐT NGHIỆP - Thạc sĩ Nguyễn Tiến Dũng Khoa Kinh tế và Quản lý, Trường Đại học Bách khoa Hà Nội potx

TÀI LIỆU HƯỚNG DẪN ĐỒ ÁN TỐT NGHIỆP - Thạc sĩ Nguyễn Tiến Dũng Khoa Kinh tế và Quản lý, Trường Đại học Bách khoa Hà Nội potx

... Bảng 2-3 Doanh thu 200 8-2 009 phân theo mặt hàng. Kí hiệu 2-3 có nghĩa là đây là bảng thứ 3 của phần 2. Sau mỗi phần, bảng và hình lại được đánh số thứ tự lại từ 1, thí dụ Bảng 3-1 , Hình 3-1 . ... Dũng 1 TÀI LIỆU HƯỚNG DẪN ĐỒ ÁN TỐT NGHIỆP Thạc sĩ Nguyễn Tiến Dũng Khoa Kinh tế và Quản lý, Trường Đại học Bách khoa Hà Nội 1. Lựa chọn đề tài tốt nghiệp Đề tài tốt nghiệp cần thể hiện ... bậc đại học thông dụng Các dạng đề tài về quản trị marketing  Phân tích và hoàn thiện các chính sách marketing-mix  Ứng dụng nghiên cứu marketing nhằm hoàn thiện các chính sách marketing-mix...
  • 7
  • 2,105
  • 11

Xem thêm

Từ khóa: giáo trình c đại học bách khoa hà nộigiáo trình c đại học bách khoagiáo trình java đại học bách khoa hà nộigiáo trình cntt đại học bách khoa hà nộigiáo trình cntt đại học bách khoatoàn bộ giáo trình của đại học bách khoaNghiê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 namNghiên cứu tổ hợp chất chỉ điểm sinh học vWF, VCAM 1, MCP 1, d dimer trong chẩn đoán và tiên lượng nhồi máu não cấpNghiên cứu vật liệu biến hóa (metamaterials) hấp thụ sóng điện tử ở vùng tần số THzNghiên cứu tổ chức chạy tàu hàng cố định theo thời gian trên đường sắt việt namBiệ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ô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ô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 LPWANQuản lý hoạt động học tập của học sinh theo hướng phát triển kỹ năng học tập hợp tác tại các trường phổ thông dân tộc bán trú huyện ba chẽ, tỉnh quảng ninhTrả 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 hiện xâm nhập dựa trên thuật toán k meansNghiê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úngĐịnh tội danh từ thực tiễn huyện Cần Giuộc, tỉnh Long An (Luận văn thạc sĩ)Tìm hiểu công cụ đánh giá hệ thống đảm bảo an toàn hệ thống thông tinTổ chức và hoạt động của Phòng Tư pháp từ thực tiễn tỉnh Phú Thọ (Luận văn thạc sĩ)Quản lý nợ xấu tại Agribank chi nhánh huyện Phù Yên, tỉnh Sơn La (Luận văn thạc sĩ)Tă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ĩ)