הסתרה
 
נתבונן בשתי מחלקות שהגדרנו בשיעורים קודמים, ונוסיף לשתיהן נתון חדש - z:

class Animal {
public:
 char name[32];
 int kennel;
 int days;
 int z;
 /* member function decleration... */
};

class Cat:public Animal {
public:
 catFood food;
 int z;
 /* member function decleration... */
};
העבר את העכבר על שורות הקוד בכדי לקבל הסבר מפורט

וכעת נראה נקודה חשובה לגבי נושא ההורשה. אם ניצור אובייקט לכל אחת מהמחלקות:

Animal a;
Cat c;
העבר את העכבר על שורות הקוד בכדי לקבל הסבר מפורט

ונשים ערך ל-z בכל אחד מהאובייקטים:

a.z = 1;
c.z = 1;
העבר את העכבר על שורות הקוד בכדי לקבל הסבר מפורט

אלו יהיו שני משתני z שונים. אובייקט ה-Animal ישתמש במשתנה z ממחלקת Animal, ואובייקט ה-Cat ישתמש במשתנה z ממחלקת Cat. וזאת למרות שלאובייקט החתול יש שני משתני z.
למרות שהנתון המתקבל כברירת מחדל הוא זה של מחלקת Cat, ניתן להגיע מאובייקט cat גם למשתנה השני:

c.Animal::z = 1;
העבר את העכבר על שורות הקוד בכדי לקבל הסבר מפורט

לכן יכולים להיות נתונים במחלקת האב ובתת המחלקה עם אותו השם, דבר זה נקרא הסתרת נתונים.