Bài giảng Kỹ thuật lập trình: Chương 5 - Trần Quang Hải Bằng
lượt xem 4
download
Bài giảng "Kỹ thuật lập trình - Chương 5: Hàm xây dựng, hàm hủy và việc khởi tạo các đối tượng" cung cấp cho người học các kiến thức: 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 một lớp là đối tượng. Mời các bạn cùng tham khảo nội dung chi tiết.
Bình luận(0) Đăng nhập để gửi bình luận!
Nội dung Text: Bài giảng Kỹ thuật lập trình: Chương 5 - Trần Quang Hải Bằng
- Nội dung Chương 5 • Hàm xây dựng • Hàm hủy HÀM XÂY DỰNG, HÀM HỦY VÀ • Hàm xây dựng sao chép VIỆC KHỞI TẠO ðỐI TƯỢNG • Thuộc tính của 1 lớp là ñối tượng 1 2 Hàm xây dựng Hàm xây dựng • Mục ñích: khởi tạo giá trị ban ñầu cho ñối tượng • Ví dụ: – Gán giá trị ñầu cho các thuộc tính. class SinhVien { class Stack { char mssv[8]; float *ds; – Cấp vùng nhớ cho con trỏ thành viên. char* hoten; int soluong; int namsinh; int vitri; float diemtb; public: class Diem { class PhanSo { public: Cấp vùng nhớ Stack(int max = 10) int x, y; int tu, mau; SinhVien() { cho con trỏ { public: public: strcpy(mssv,””); soluong = max; Diem(int a) PhanSo() hoten = new char[50]; vitri = 0; { x = y = a; } { tu=0; mau=1; } namsinh = 1980; ds = new Diem(int h, int t) PhanSo(int x) diemtb = 0; float[soluong]; { x = h; y=t; } { tu=x; mau=1; } } } …. PhanSo(int t, int m) SinhVien(char*,char*,int,fl Stack(float* d, int m, }; { tu = t; mau=m; } oat); int n); …. … … }; }; }; 3 4
- Hàm xây dựng Hàm xây dựng • Nếu không có ñịnh nghĩa hàm xây dựng: • Nếu có ñịnh nghĩa ít nhất 1 hàm xây dựng: – Mặc nhiên sẽ tự ñộng có 1 hàm xây dựng không tham số. – Có bao nhiêu hàm xây dựng sẽ có bấy nhiêu cách khởi tạo – Chỉ có 1 cách khởi tạo ñối tượng theo dạng không tham số. ñối tượng theo dạng ñã ñịnh nghĩa. class Diem { void main() { int x, y; Diem a; void main() { void main() { public: Diem *pa = new Diem(); PhanSo a; Stack a; void InDiem(); Diem ds1[10]; PhanSo b(3); Stack b(5); void NhapDiem(); Diem *ds2 = new PhanSo c(2,5); Stack c[5]; void GanGiaTri(int, Diem[20]; PhanSo d[3]; Stack *pa = new Stack(); int); … PhanSo *pa = new PhanSo; Stack *pb = new Stack(40); int GiaTriX(); } PhanSo *pa1 = new PhanSo(); Stack *pc = new Stack[40]; int GiaTriY(); PhanSo *pa2 = new PhanSo[5]; float data[40]; … 1000H PhanSo *pb = new PhanSo(3); for(int i=0;i delete con trỏ. • Trình tự thực hiện: – ðối tượng ñược tạo ra trước. class SinhVien { class Stack { – Hàm xây dựng sẽ gọi sau trên ñối tượng. char mssv[8]; float *ds; char* hoten; int soluong; 2 int namsinh; int vitri; PhanSo c(2,5); tu tu 5 float diemtb; public: mau mau c c public: Stack(int max = 10) { 1000H 1000H SinhVien() { soluong = max; PhanSo strcpy(mssv,””); vitri = 0; *pa2 = new tu 1000 tu 0 0 0 0 0 1000 mau mau 1 1 1 1 1 hoten = new char[50]; ds = new PhanSo[5]; *pa2 *pa2 namsinh = 1980; float[soluong]; diemtb = 0; } } 1200H ~SinhVien() { ~Stack() { *ds … *ds 1200 delete[] hoten; } Stack … 5 delete[] ds; } soluong soluong … 0 … … b(5); vitri vitri 7 }; }; 8
- Hàm hủy Hàm xây dựng sao chép • Thứ tự thực hiện: gọi trước khi hủy ñối tượng: • Tại sao cần hàm xây dựng sao chép? – Kết thúc 1 hàm mà trong ñó ta có khởi tạo ñối tượng. – Khởi tạo 1 ñối tượng có giá trị giống 1 ñối tượng khác. – Thu hồi vùng nhớ cho con trỏ ñối tượng. – Khác với phép gán (dấu =) Hàm xây dựng ñược gọi • Nếu không ñịnh nghĩa hàm xây dựng sao chép: void HamMinhHoa() { Stack a; Hàm hủy ñược gọi cho – Ngôn ngữ sẽ tự ñộng tạo ra cho ta: nội dung là gán (=) Stack *pa = new Stack(8); ñối tượng mà pa ñang trỏ tới tương ứng từng thành phần. … delete pa; Hàm xây dựng ñược gọi 5 lần – Không chính xác khi có dữ liệu thành viên là con trỏ. Stack *pb = new Stack[5]; … Hàm hủy ñược gọi 5 lần delete[] pb; pb = new Stack(20); Hàm xây dựng ñược gọi … Hàm hủy ñược gọi cho a } trước khi kết thúc hàm HamMinhHoa() 9 10 Hàm xây dựng sao chép Hàm xây dựng sao chép • Cú pháp: (const const & & ) 1300H { Nội dung hàm } Stack a(8); *ds 1300 … soluong 8 4 3.2 1.4 … VD: Diem(const Diem& d) { … } 3 vitri Stack(const Stack& s) { … } a *ds 1300 2 con trỏ sẽ trỏ SinhVien(const SinhVien& sv) { … } soluong 8 cùng 1 ñịa chỉ Stack b(a); 3 nếu không • Nội dung: vitri b ñịnh nghĩa – Gán tương ứng các thành phần dữ liệu (không là con trỏ). hàm xây dựng sao chép – Cấp vùng nhớ và sao chép nội dung vùng nhớ từ ñối tượng cho trước. VD: Diem(const Diem& d) { x=d.x; y=d.y; } PhanSo(const PhanSo& p) { tu=p.tu; 12 mau=p.mau; }
- Hàm xây dựng sao chép Hàm xây dựng sao chép • Ví dụ: • Ví dụ: SinhVien nva; … class SinhVien { class Stack { 1 9 2 0 8 9 1 \0 mssv[] Stack a(8); … char mssv[8]; float *ds; char* hoten; 1240 *hoten *ds 1300 1300H int soluong; int namsinh; 1974 namsinh soluong 8 4 3.2 1.4 … … 8.14 int vitri; float diemtb; diemtb vitri 3 public: public: 1240H … a … N g u y e n … … Stack(const Stack& s) { copy SinhVien(const SinhVien& s){ 2760H copy soluong = s.soluong; strcpy(mssv, s.mssv); N g u y e n … … vitri = s.vitri; *ds 1570 hoten = new char[50]; ds = new float[soluong]; soluong 8 4 3.2 1.4 … … strcpy(hoten, s.hoten); 1 9 2 0 8 9 1 \0 mssv[] for(int i=0; i
- Thuộc tính của 1 lớp là ñối tượng Thuộc tính của 1 lớp là ñối tượng • Cách truy xuất: Void DuongTron::Ve() { cout
CÓ THỂ BẠN MUỐN DOWNLOAD
-
Bài giảng Kỹ thuật lập trình - Phạm Thế Bảo
0 p | 220 | 32
-
Bài giảng Kỹ thuật lập trình: Chương I - Lưu Hồng Việt
48 p | 194 | 23
-
Bài giảng Kỹ thuật lập trình: Chương IV - Lưu Hồng Việt
32 p | 151 | 17
-
Bài giảng Kỹ thuật lập trình: Chương III - Lưu Hồng Việt
51 p | 147 | 15
-
Bài giảng Kỹ thuật lập trình: Chương V - Lưu Hồng Việt
19 p | 127 | 15
-
Bài giảng Kỹ thuật lập trình: Phần 1 - ĐH CNTT&TT
37 p | 114 | 10
-
Bài giảng Kỹ thuật lập trình - Bài 1: Tổng quan về kỹ thuật lập trình
65 p | 164 | 8
-
Bài giảng Kỹ thuật lập trình: Bài 1 - Phạm Đình Sắc
9 p | 127 | 7
-
Bài giảng Kỹ thuật lập trình nâng cao: Chương 4 - ThS. Dương Thành Phết
26 p | 92 | 7
-
Bài giảng Kỹ thuật lập trình - Chương 10: Tổng kết môn học (Trường Đại học Bách khoa Hà Nội)
67 p | 15 | 4
-
Bài giảng Kỹ thuật lập trình: Chương 1 - Trần Quang
39 p | 8 | 2
-
Bài giảng Kỹ thuật lập trình: Chương 2 - Trần Quang
25 p | 10 | 2
-
Bài giảng Kỹ thuật lập trình: Chương 3 - Trần Quang
52 p | 10 | 2
-
Bài giảng Kỹ thuật lập trình: Chương 4 - Trần Quang
32 p | 7 | 2
-
Bài giảng Kỹ thuật lập trình: Chương 6 - Trần Quang
37 p | 11 | 2
-
Bài giảng Kỹ thuật lập trình: Chương 7 - Trần Quang
28 p | 6 | 2
-
Bài giảng Kỹ thuật lập trình: Chương 8 - Trần Quang
34 p | 7 | 2
-
Bài giảng Kỹ thuật lập trình: Chương 9 - Trần Quang
33 p | 3 | 2
Chịu trách nhiệm nội dung:
Nguyễn Công Hà - Giám đốc Công ty TNHH TÀI LIỆU TRỰC TUYẾN VI NA
LIÊN HỆ
Địa chỉ: P402, 54A Nơ Trang Long, Phường 14, Q.Bình Thạnh, TP.HCM
Hotline: 093 303 0098
Email: support@tailieu.vn