Như bạn có thể thấy ở code ví dụ sau →
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
#include <iostream> using namespace std; class Super { protected: int storage; public: void put(int val) { storage = val; } int get(void) { return storage; } }; class Sub : public Super { public: void print(void) { cout << "storage = " << storage << endl; } }; int main(void) { Sub object; object.put(100); object.put(object.get() + 1); object.print(); return 0; } |
chúng tôi đã thêm một hàm mới vào lớp Sub. Chúng tôi đã thêm hàm print. Nó không hề phức tạp, nhưng nó làm một điều quan trọng: nó truy cập vào biến storage của lớp Super. Điều này sẽ không thể xảy ra nếu biến storage được khai báo là private.
Trong phạm vi hàm main, biến vẫn bị ẩn. Bạn không được code như thế này:
1 |
object.storage = 0; |
Nếu code như thế sẽ lại ăn chửi của trình biên dịch ngay.
Quên đấy, chương trình mới của chúng ta ở trên sẽ cho ra kết quả sau:
1 |
storage = 101 |