Cq lt hdt-th2011-01-tuan02

264 views
162 views

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
264
On SlideShare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
6
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Cq lt hdt-th2011-01-tuan02

  1. 1. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM KHOA CÔNG NGHỆ THÔNG TIN BỘ MÔN CÔNG NGHỆ PHẦN MỀM HỆ CHÍNH QUI MÔN: LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG GVLT: TS. ĐINH BÁ TIẾN HƯỚNG DẪN THỰC HÀNH TUẦN 02 – CONSTRUCTOR & DESTRUCTOR TRẦN THANH HẢI HỒ TUẤN THANH TP.HCM, ngày 01 tháng 10 năm 2012
  2. 2. tthai/htthanh@fit.hcmus.edu.vn Trang 2 MỤC LỤC 1 Bài tập...........................................................................................................................3 2 Bài tập trên lớp..............................................................................................................3 3 Bài tập về nhà ...............................................................................................................5
  3. 3. tthai/htthanh@fit.hcmus.edu.vn Trang 3 1 Bài tập Hoàn thành các bài tập dưới đây, tuân thủ các qui tắc lập trình đã học trong 2 môn năm nhất: 1. Qui tắc đặt tên 2. Qui tắc viết code 3. Qui tắc ghi chú (ghi chú mỗi project và ghi chú mỗi hàm) 4. Qui tắc chia file (.h và .cpp) 5. Qui tắc bố trí project (1 solution, n projects: Bai01, Bai02, …) 2 Bài tập trên lớp 1. Viết lại lớp phân số, thay các hàm gán, cộng, trừ, nhân, chia bằng các toán tử. Ngoài ra, cần cung cấp thêm các hàm khởi tạo từ giá trị mặc định, tham số truyền vào, phân số khác… 2. Viết chương trình chứa các đoạn mã nguồn bên dưới. Kiểm tra chúng có biên dịch hay thực thi thành công hay không. Giải thích. // 1. int& abc() { int a = 5; return a; } // 2. int* bcd() { int a = 5; return &a; } // 3. int* cde() { int a = 10; return a; } // 4. int& def(int &a) { return (a = 6); }
  4. 4. tthai/htthanh@fit.hcmus.edu.vn Trang 4 // 5. int* efg() { return new int(3); } 3. Viết chương trình chứa các đoạn mã nguồn bên dưới. Kiểm tra chúng có biên dịch hay thực thi thành công hay không. Giải thích. // 1. class Integer { public: int val; Integer(int v) { val = v; } }; int main() { Integer i(3); Integer j; } // 2. class Integer { public: int val; Integer(int v) { val = v; cout << "constructor with arg " << v << endl; } }; int main() { Integer i(3); Integer j = 5; } // 3. class Integer { public: int val; Integer(int v) { val = v; } }; int main() { Integer a[] = { Integer(2), Integer(5) }; Integer b[2]; } 4. Viết chương trình chứa các đoạn mã nguồn bên dưới. Kiểm tra chúng có biên dịch hay thực thi thành công hay không. Giải thích. // 1. class Point { public: int x, y;
  5. 5. tthai/htthanh@fit.hcmus.edu.vn Trang 5 Point() { cout << "constructor invoked" << endl; } ~Point() { cout << "destructor invoked" << endl; } }; int main() { Point *p = new Point; delete p; } // 2. class IntegerArray { public: int *data; int size; IntegerArray(int size) { data = new int[size]; this->size = size; } ~IntegerArray() { delete[] data; } }; int main() { IntegerArray a(2); a.data[0] = 4; a.data[1] = 2; if (true) { IntegerArray b = a; } cout << a.data[0] << endl; } 3 Bài tập về nhà 1. Viết chương trình chứa các đoạn mã nguồn bên dưới. Kiểm tra khi biên dịch hay thực thi có lỗi gì không. Giải thích. // 1. class Cents { private: int m_nCents; public: Cents(int nCents=0) { m_nCents = nCents; } // Copy constructor Cents(const Cents cSource) { m_nCents = cSource.m_nCents; }
  6. 6. tthai/htthanh@fit.hcmus.edu.vn Trang 6 Cents& operator= (const Cents &cSource); }; Cents& Cents::operator= (const Cents &cSource) { // do the copy m_nCents = cSource.m_nCents; // return the existing object return *this; } 2. Viết lại các đoạn mã nguồn dưới cho hợp lý. // 1. class IntegerArray { public: int *data; int size; }; int main() { IntegerArray arr; arr.size = 2; arr.data = new int[arr.size]; arr.data[0] = 4; arr.data[1] = 5; delete[] a.data; } // 2. class IntegerArray { public: int *data; int size; IntegerArray(int size) { data = new int[size]; this->size = size; } ~IntegerArray() { delete[] data; } }; int main() { IntegerArray a(2); a.data[0] = 4; a.data[1] = 2; if (true) { IntegerArray b = a; } cout << a.data[0] << endl; }

×