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 Hook
17 p | 123 | 36
-
Bài giảng Kỹ thuật lập trình: Ngôn ngữ lập trình C
7 p | 167 | 20
-
Bài giảng Kỹ thuật lập trình: Chương V - Lưu Hồng Việt
19 p | 128 | 15
-
Bài giảng Kỹ thuật lập trình - Chương 1: Nhập môn về máy tính và lập trình
16 p | 145 | 8
-
Bài giảng Kỹ thuật lập trình cơ bản: Chương 0 – Trần Minh Thái
17 p | 115 | 7
-
Bài giảng Kỹ thuật lập trình: Bài 1 - Phạm Đình Sắc
9 p | 130 | 7
-
Bài giảng Kỹ thuật lập trình: Bài 1 - TS. Đào Trung Kiên
18 p | 109 | 6
-
Bài giảng Kỹ thuật lập trình: Chương 0 - Trường Đại học Ngoại ngữ - Tin học TP.HCM
7 p | 15 | 6
-
Bài giảng Kỹ thuật lập trình - TS. Vũ Hương Giang
8 p | 117 | 5
-
Bài giảng Kỹ thuật lập trình: Bài 2 - Phạm Đình Sắc
7 p | 117 | 5
-
Bài giảng Kỹ thuật lập trình: Chương 0 - ThS Trần Duy Thanh
11 p | 34 | 3
-
Bài giảng Kỹ thuật lập trình: Chương 1 - Trần Quang Hải Bằng
15 p | 63 | 3
-
Bài giảng Kỹ thuật lập trình nâng cao: Chương 2 - Trần Minh Thái
13 p | 59 | 3
-
Bài giảng Kỹ thuật lập trình: Giới thiệu môn học - ThS. Lê Thị Ngọc Hạnh
9 p | 82 | 2
-
Bài giảng Kỹ thuật lập trình: Mở đầu - TS. Vũ Hương Giang
8 p | 36 | 2
-
Bài giảng Kỹ thuật lập trình: Giới thiệu môn học - ThS. Đặng Bình Phương
7 p | 0 | 0
-
Bài giảng Kỹ thuật lập trình: Danh sách liên kết - ThS. Đặng Bình Phương
20 p | 2 | 0
-
Bài giảng Kỹ thuật lập trình: Chuỗi ký tự - ThS. Đặng Bình Phương
20 p | 1 | 0
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