Khi làm việc với các đối tượng và các thể hiện khác của một lớp, truy cập các thuộc tính là một trong những thao tác thông thường đối với một lập trình viên. Việc giành quyền truy cập vào một số dữ liệu được lưu trữ trong các đối tượng có thể khó khăn, dựa trên các phương pháp bảo mật được sử dụng cho chúng. Vì vậy, các thuộc tính được đóng bởi các chỉ định riêng và được bảo vệ có thể được kéo ra khỏi một cá thể lớp chỉ trong một phương thức thuộc về một đối tượng của cùng một lớp hoặc một lớp con (đối với được bảo vệ).
Hướng dẫn
Bước 1
Tạo một đối tượng hoặc một con trỏ đến một thể hiện của lớp có thuộc tính bạn cần trong chương trình của mình. Cấu trúc tiêu chuẩn cho một hoạt động như vậy là CMyClass myObj1. Đôi khi, để khởi tạo một đối tượng, bạn phải truyền một số tham số nhất định cho phương thức khởi tạo lớp. Trong trường hợp này, bản ghi của việc tạo đối tượng có thể trông giống như sau: CMyClass myObj1 (param1, param2, param3), trong đó CMyClass là tên lớp, myObj1 là tên của đối tượng đang được tạo và tất cả các tham số do phương thức khởi tạo yêu cầu đều được liệt kê trong ngoặc. Một con trỏ đến một cá thể lớp được tạo như sau: CMyClass * pObj1 = new CMyClass (param1, param2, param3).
Bước 2
Cách đơn giản nhất để gọi một thuộc tính là tham chiếu trực tiếp đến nó ở bất kỳ đâu trong chương trình. Tuy nhiên, điều này chỉ có thể thực hiện được đối với dữ liệu mở được mô tả trong một lớp có công cụ sửa đổi công khai. Truy cập trực tiếp thông qua một đối tượng trông giống như sau: myObj1.attr1, trong đó attr1 là một thuộc tính của lớp này. Đối với một con trỏ, lệnh gọi sẽ là: pObj1–> attr1.
Bước 3
Nếu thuộc tính mà bạn cần tham chiếu đến có trạng thái ẩn và được mô tả trong một lớp với công cụ sửa đổi riêng tư, thì chỉ có thể truy cập vào thuộc tính đó từ một phương thức thuộc cùng một lớp. Phương thức hoặc chức năng của lớp phải có trạng thái chung là công khai. Thêm một phương thức mới vào lớp, nơi ghi quá trình xử lý thuộc tính bắt buộc. Trong trường hợp này, các tham số có thể được truyền cho hàm, tùy thuộc vào giá trị mà các hành động nhất định được thực hiện. Bản thân hàm cũng có thể trả về dữ liệu, chẳng hạn như nội dung của một thuộc tính. Mã chương trình C ++ thực hiện cả hai hàm để làm việc với thuộc tính private: class CMyClass {protected: int attr1; // thuộc tính public: void funcA1 (int param) {attr1 = param; } int funcA2 () {return attr1; }};
Bước 4
Do đó, để đặt thuộc tính private attr1 thành giá trị bạn cần, hãy gọi một phương thức của cùng một lớp bằng cách sử dụng đối tượng đã tạo trước đó: myObj1.funcA1 (10) - bằng một phép toán ngầm tương tự, giá trị 10 được đặt trong thuộc tính attr1. Khi làm việc với con trỏ đến một thể hiện của một lớp, một thao tác tương tự sẽ giống như sau: рObj1–> funcA (10). Để truy xuất thuộc tính private attr1 và tìm ra giá trị được lưu trữ trong nó, hãy gọi một phương thức khác của lớp: int Res = myObj1.funcA2 (). Trong trường hợp này, biến số nguyên Res sẽ được gán giá trị của biến lớp ẩn.
Bước 5
Nếu bạn cần gọi một thuộc tính có trạng thái được bảo vệ trong tất cả các đối tượng của các lớp con, hãy tham chiếu trực tiếp đến biến của nó. Tuy nhiên, khi làm việc trong các chức năng của lớp ngoại, quyền truy cập vào dữ liệu được bảo vệ sẽ phải được thực hiện theo cách được mô tả ở trên.
Bước 6
Để gọi một thuộc tính mà không cần tạo một đối tượng, hãy khai báo biến của nó trong lớp là static bằng cách sử dụng cấu trúc sau: static int attr1. Trong trường hợp này, bạn có thể lấy ra thuộc tính ở bất kỳ đâu trong mã chương trình bằng cách chỉ định mục nhập: CMyClass:: attr1.