intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

Bài giảng Lập trình hướng đối tượng và C++: Chương 5

Chia sẻ: đinh Thị Tú Oanh | Ngày: | Loại File: PDF | Số trang:5

89
lượt xem
4
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Bài giảng Lập trình hướng đối tượng và C++: Chương 5 Hàm xây dựng, hàm hủy và việc khởi tạo đối tượng trình bày các nội dung sau: Hàm xây dựng, hàm hủy, hàm xây dựng sao chép, thuộc tính của 1 lớp là đối tượng,...

Chủ đề:
Lưu

Nội dung Text: Bài giảng Lập trình hướng đối tượng và C++: Chương 5

N i dung<br /> • Hàm xây d ng<br /> <br /> Chương 5<br /> <br /> HÀM XÂY D NG, HÀM H Y VÀ<br /> VI C KH I T O ð I TƯ NG<br /> <br /> • Hàm h y<br /> • Hàm xây d ng sao chép<br /> • Thu c tính c a 1 l p là ñ i tư ng<br /> <br /> 1<br /> <br /> 2<br /> <br /> Hàm xây d ng<br /> <br /> Hàm xây d ng<br /> <br /> • M c ñích: kh i t o giá tr ban ñ u cho ñ i tư ng<br /> <br /> • Ví d :<br /> <br /> – Gán giá tr ñ u cho các thu c tính.<br /> – C p vùng nh cho con tr thành viên.<br /> class Diem {<br /> int x, y;<br /> public:<br /> Diem(int a)<br /> { x = y = a; }<br /> Diem(int h, int t)<br /> { x = h; y=t; }<br /> ….<br /> };<br /> <br /> class PhanSo {<br /> int tu, mau;<br /> public:<br /> PhanSo()<br /> { tu=0; mau=1; }<br /> PhanSo(int x)<br /> { tu=x; mau=1; }<br /> PhanSo(int t, int m)<br /> { tu = t; mau=m; }<br /> ….<br /> };<br /> 3<br /> <br /> class SinhVien {<br /> class Stack {<br /> char mssv[8];<br /> float *ds;<br /> char* hoten;<br /> int soluong;<br /> int namsinh;<br /> int vitri;<br /> float diemtb;<br /> public:<br /> public:<br /> Stack(int max = 10)<br /> C p vùng nh<br /> SinhVien() {<br /> {<br /> cho con tr<br /> strcpy(mssv,””);<br /> soluong = max;<br /> hoten = new char[50];<br /> vitri = 0;<br /> namsinh = 1980;<br /> ds = new<br /> float[soluong];<br /> diemtb = 0;<br /> }<br /> }<br /> SinhVien(char*,char*,int,fl<br /> Stack(float* d, int m,<br /> int n);<br /> oat);<br /> …<br /> …<br /> };<br /> };<br /> 4<br /> <br /> Hàm xây d ng<br /> <br /> Hàm xây d ng<br /> <br /> • N u không có ñ nh nghĩa hàm xây d ng:<br /> <br /> • N u có ñ nh nghĩa ít nh t 1 hàm xây d ng:<br /> <br /> – M c nhiên s t ñ ng có 1 hàm xây d ng không tham s .<br /> – Ch có 1 cách kh i t o ñ i tư ng theo d ng không tham s .<br /> class Diem {<br /> int x, y;<br /> public:<br /> void InDiem();<br /> void NhapDiem();<br /> void GanGiaTri(int,<br /> int);<br /> int<br /> GiaTriX();<br /> int<br /> GiaTriY();<br /> …<br /> };<br /> // ð nh nghĩa các hàm<br /> thành viên<br /> ...<br /> <br /> void main() {<br /> Diem<br /> a;<br /> Diem<br /> *pa = new Diem();<br /> Diem<br /> ds1[10];<br /> Diem<br /> *ds2 = new<br /> Diem[20];<br /> …<br /> }<br /> x<br /> y<br /> <br /> …<br /> …<br /> a<br /> <br /> 1000H<br /> <br /> Không có giá tr<br /> ñ u<br /> nên d gây ra<br /> hi u ng ph<br /> 5<br /> <br /> Hàm xây d ng<br /> – Hàm xây d ng s g i sau trên ñ i tư ng.<br /> tu<br /> mau<br /> <br /> PhanSo c(2,5);<br /> <br /> tu<br /> 1000 mau<br /> *pa2<br /> <br /> 2<br /> 5<br /> c<br /> 1000H<br /> tu 0 0 0 0 0<br /> 1000<br /> mau 1 1 1 1 1<br /> *pa2<br /> tu<br /> mau<br /> <br /> c<br /> 1000H<br /> <br /> 1200H<br /> Stack<br /> b(5);<br /> <br /> *ds<br /> soluong<br /> vitri<br /> <br /> void main() {<br /> void main() {<br /> PhanSo a;<br /> Stack a;<br /> PhanSo b(3);<br /> Stack b(5);<br /> PhanSo c(2,5);<br /> Stack c[5];<br /> PhanSo d[3];<br /> Stack *pa = new Stack();<br /> PhanSo *pa = new PhanSo;<br /> Stack *pb = new Stack(40);<br /> PhanSo *pa1 = new PhanSo();<br /> Stack *pc = new Stack[40];<br /> PhanSo *pa2 = new PhanSo[5]; float data[40];<br /> PhanSo *pb = new PhanSo(3);<br /> for(int i=0;i delete con tr .<br /> <br /> class SinhVien {<br /> char mssv[8];<br /> char* hoten;<br /> int<br /> namsinh;<br /> float diemtb;<br /> public:<br /> SinhVien() {<br /> strcpy(mssv,””);<br /> hoten = new char[50];<br /> namsinh = 1980;<br /> diemtb = 0;<br /> }<br /> ~SinhVien() {<br /> delete[] hoten;<br /> }<br /> …<br /> };<br /> <br /> class Stack {<br /> float *ds;<br /> int<br /> soluong;<br /> int<br /> vitri;<br /> public:<br /> Stack(int<br /> max = 10) {<br /> soluong = max;<br /> vitri = 0;<br /> ds = new<br /> float[soluong];<br /> }<br /> ~Stack() {<br /> delete[] ds; }<br /> …<br /> 8<br /> };<br /> <br /> Hàm h y<br /> <br /> Hàm xây d ng sao chép<br /> <br /> • Th t th c hi n: g i trư c khi h y ñ i tư ng:<br /> – K t thúc 1 hàm mà trong ñó ta có kh i t o ñ i tư ng.<br /> <br /> • T i sao c n hàm xây d ng sao chép?<br /> – Kh i t o 1 ñ i tư ng có giá tr gi ng 1 ñ i tư ng khác.<br /> <br /> – Thu h i vùng nh cho con tr ñ i tư ng.<br /> <br /> – Khác v i phép gán (d u =)<br /> <br /> Hàm xây d ng ñư c g i<br /> void HamMinhHoa() {<br /> Stack a;<br /> Stack *pa = new Stack(8);<br /> …<br /> delete pa;<br /> Stack *pb = new Stack[5];<br /> …<br /> delete[] pb;<br /> pb = new Stack(20);<br /> …<br /> }<br /> <br /> • N u không ñ nh nghĩa hàm xây d ng sao chép:<br /> <br /> Hàm h y ñư c g i cho<br /> ñ i tư ng mà pa ñang tr t i<br /> <br /> – Ngôn ng s t ñ ng t o ra cho ta: n i dung là gán (=)<br /> tương ng t ng thành ph n.<br /> <br /> Hàm xây d ng ñư c g i 5 l n<br /> <br /> – Không chính xác khi có d li u thành viên là con tr .<br /> <br /> Hàm h y ñư c g i 5 l n<br /> Hàm xây d ng ñư c g i<br /> Hàm h y ñư c g i cho a<br /> trư c khi k t thúc hàm<br /> HamMinhHoa() 9<br /> <br /> Hàm xây d ng sao chép<br /> <br /> 10<br /> <br /> Hàm xây d ng sao chép<br /> • Cú pháp: (const &<br /> const<br /> &<br /> <br /> Stack a(8);<br /> …<br /> <br /> *ds 1300<br /> 8<br /> soluong<br /> 3<br /> vitri<br /> a<br /> <br /> Stack b(a);<br /> <br /> { N i dung hàm }<br /> <br /> 1300H<br /> 4<br /> <br /> *ds 1300<br /> 8<br /> soluong<br /> 3<br /> vitri<br /> b<br /> <br /> )<br /> <br /> 3.2<br /> <br /> 1.4<br /> <br /> …<br /> <br /> VD: Diem(const Diem& d) { … }<br /> Stack(const Stack& s) { … }<br /> <br /> 2 con tr s tr<br /> cùng 1 ñ a ch<br /> n u không<br /> ñ nh nghĩa<br /> hàm xây d ng<br /> sao chép<br /> <br /> SinhVien(const SinhVien& sv) { … }<br /> • N i dung:<br /> – Gán tương ng các thành ph n d li u (không là con tr ).<br /> – C p vùng nh và sao chép n i dung vùng nh t ñ i tư ng<br /> cho trư c.<br /> VD: Diem(const Diem& d) { x=d.x; y=d.y; }<br /> PhanSo(const PhanSo& p) { tu=p.tu;<br /> mau=p.mau; }<br /> <br /> 12<br /> <br /> Hàm xây d ng sao chép<br /> <br /> Hàm xây d ng sao chép<br /> <br /> • Ví d :<br /> <br /> • Ví d :<br /> SinhVien nva; …<br /> <br /> class SinhVien {<br /> char<br /> mssv[8];<br /> char* hoten;<br /> int<br /> namsinh;<br /> float<br /> diemtb;<br /> public:<br /> …<br /> SinhVien(const SinhVien& s){<br /> strcpy(mssv, s.mssv);<br /> hoten = new char[50];<br /> strcpy(hoten, s.hoten);<br /> namsinh = s.namsinh;<br /> diemtb = s.diemtb;<br /> }<br /> …<br /> };<br /> <br /> 1 9 2 0 8 9 1 \0<br /> 1240<br /> 1974<br /> 8.14<br /> <br /> mssv[]<br /> *hoten<br /> namsinh<br /> diemtb<br /> <br /> 1240H<br /> N<br /> <br /> g<br /> <br /> u<br /> <br /> y<br /> <br /> e<br /> <br /> n<br /> <br /> 2760H<br /> N<br /> <br /> g<br /> <br /> …<br /> <br /> …<br /> <br /> copy<br /> u<br /> <br /> y<br /> <br /> e<br /> <br /> n<br /> <br /> 1 9 2 0 8 9 1 \0<br /> 2760<br /> 1974<br /> 8.14<br /> <br /> SinhVien x(nva);<br /> <br /> …<br /> <br /> …<br /> <br /> mssv[]<br /> *hoten<br /> namsinh<br /> diemtb<br /> <br /> class Stack {<br /> Stack a(8); …<br /> float<br /> *ds;<br /> *ds 1300<br /> 1300H<br /> int<br /> soluong;<br /> 4 3.2 1.4 …<br /> …<br /> soluong 8<br /> int<br /> vitri;<br /> 3<br /> vitri<br /> public:<br /> a<br /> …<br /> copy<br /> Stack(const Stack& s) {<br /> soluong = s.soluong;<br /> *ds 1570<br /> vitri = s.vitri;<br /> 4 3.2 1.4 …<br /> …<br /> soluong 8<br /> ds = new float[soluong];<br /> 1570H<br /> 3<br /> vitri<br /> for(int i=0; i
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
3=>0