Tài liệu Các đặc điểm C++ áp dụng cho class Lập trình hướng đối tượng docx

15 544 0
Tài liệu Các đặc điểm C++ áp dụng cho class Lập trình hướng đối tượng docx

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Các đặc điểm C++ áp dụng cho class Lập trình hướng đối tượng Tài liệu đọc n Eckel, Bruce Thinking in C++, 2nd Ed Vol ă Chapter n Start at p 352 (Classes) ă Chapter n n 8: Constants 10: Name Control p 423 (Static Members in C++) to p 442 (Alternate Linkage Specifications) Dietel C++ How to Program, 4th Ed ă Chapter n 7: Class II 7.2, 7.3, 7.6, 7.7, 7.8 @ 2004 Trần Minh Châu FOTECH VNU Tổng quan n Các đặc điểm C++ const, static, áp dụng cho lớp nh th no? ă hng thnh viờn const member thành viên tĩnh – static member thành viên tĩnh – const static member hàm/phương thức – const method hm/phng thc tnh static method ă lm vic vi cỏc i tng ă ă ă ă @ 2004 Trn Minh Châu FOTECH VNU Hằng thành viên – const member n Ta biết từ khoá const dùng với biến thông thường const int x = 50; n n Từ khoá const thành viên liệu nào? Khi thành viên liệu khai báo const, thành viên giữ nguyên giá trị suốt thời gian sống đối tượng chủ class MyClass { public: MyClass(int x = 5); // Constructor w/default argument private: const int foo; // Declares foo a constant member }; @ 2004 Trần Minh Châu FOTECH VNU Hằng thành viên – const member khởi tạo thành viên nào? n n n Bên khai báo class? Quá sớm, ta chưa có đối tượng nào, khơng có chỗ để lưu giá trị Gán trị thân hàm constructor? Quá muộn, không đảm bảo khơng truy nhập trước gán Giải pháp: danh sách khởi tạo constructor – member initialization list @ 2004 Trần Minh Châu FOTECH VNU Hằng thành viên – const member n danh sách khởi tạo constructor nằm định nghĩa constructor, chứa tập "lời gọi constructor" mà thực trước thực thi phần thân constructor ú ă ă dựng cho cỏc hng thnh viờn, danh sách khởi tạo đảm bảo chúng khởi tạo trước truy nhập chi tiết thêm phần thừa kế class MyClass { dấu hai chấm tách public: danh sách tham số MyClass(int x = 5); // Constructor w/default argument danh sách khởi tạo private: const int foo; // Declares foo a constant member danh sách khởi tạo }; constructor MyClass::MyClass(int x) : foo(x) { // constructor body } @ 2004 Trần Minh Châu FOTECH VNU Hằng thành viên – const member n Danh sách khởi tạo – Ví dụ class MyClass { public: dấu phảy tách MyClass(int x = 5); // Constructor w/default phần danh sách thành argument private: khởi tạo const int foo; // Declares foo a constant member const int bar; }; MyClass::MyClass(int x, int y) : foo(x), bar(y) { // constructor body } danh sách khởi tạo constructor, khởi tạo foo với giá trị x , khởi tạo bar với giá trị y @ 2004 Trần Minh Châu FOTECH VNU Hằng thành viên – const member n Điều quan trọng cần nhớ: thành viên đối tượng không thay đổi giá trị suốt thời gian sống ca i tng ú ă ă n Cỏc hng ca đối tượng khác (thuộc lớp) quan hệ với Ví dụ, đối tượng thuộc lớp MyClass có foo với giá trị 5, đó, đối tượng khác thuộc lớp MyClass lại có foo có giá trị 10 Tiếp theo, ta tìm hiểu cách định nghĩa thành viên liệu dùng chung tất đối tượng thuộc lớp @ 2004 Trần Minh Châu FOTECH VNU Thành viên tĩnh – static member n Đối với biến thông thường, static dùng để khai báo biến tĩnh tồn suốt trình chạy chương trình void myCounter() { static int count = 0; // Static variable count++; cout printCount(); MyClass* y = new MyClass; x->printCount(); y->printCount(); } There There There There There are are are are are delete x; y->printCount(); currently currently currently currently currently @ 2004 Trần Minh Châu FOTECH VNU 2 instance(s) instance(s) instance(s) instance(s) instance(s) of of of of of MyClass MyClass MyClass MyClass MyClass 22 Hằng đối tượng – const object n đối tượng: ¨ trình biên dịch đảm bảo khơng thành viên liệu bị sửa đổi sau đối tượng khởi tạo n kể cỏc thnh viờn public khụng phi l hng ă khai báo: const MyClass x(5); n // x Khi làm việc với đối tượng, ta gọi hàm thành viên - const tĩnh - static 23 @ 2004 Trần Minh Châu FOTECH VNU Hằng đối tượng Ví dụ gọi hàm thành viên tĩnh class MyClass { public: MyClass(); ~MyClass(); static void printCount(); void foo() const; void bar(); }; const int x; int y; const MyClass x; x.printCount(); // static - OK x.foo(); // const - OK x.bar(); // non-const - error const MyClass x; cout y; } 29 ... dụ cách khai báo, khởi tạo, làm việc với đối tượng Trước tiếp tục, ta nên tóm tắt lại số cách sử dụng đối tượng C++ Kèm thêm số lưu ý vấn đề liên quan tới quản lý nhớ lập trình hướng đối tượng. .. việc với đối tượng n n Tạo mảng đối tượng mảng trỏ tới đối tượng MyClass foo[10]; MyClass* foo2[10]; for (int i = 0; i < 10; i++) { foo2[i] = new MyClass(i, i + 1); } Truy nhập đối tượng mảng... trỏ this đối tượng chủ? Hằng phương thức cú pháp cho phép ta đảm bảo với trình biên dịch phương thức không sửa đổi đối tượng chủ class MyClass { void printCount() const; }; void MyClass::PrintCount()

Ngày đăng: 25/01/2014, 11:20

Từ khóa liên quan

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan