Hm... even SetData() and GetData() methods are not defined in Drive class, but there is no syntax error when these methods are called with Derive class .Code:class Base { public: Base(); void SetData(int data) { m_data = data; } int GetData() { return m_data; } virtual void PrintData() { cout << "Data value: " << m_data; } private: int m_data; } class Derive : public Base { public: Derive() void SetX( float x) { m_Value = x; } void void PrintData() { cout << " Value: " << m_Value; } private: float m_Value; } int main() { Derive D; D.SetData(4); // it works even not defined in Derive class? int data1 = D.GetData(); // Also work return 0; }
Anyone knows why?