Публічні функції може викликати будь-хто, а захищені і власні — тільки функції-члени і друзі. Використовуючи інкапсуляцію, структуру Array з попереднього розділу можна переписати таким чином: class Array { public: void Alloc(int new_len); void Free(); inline double Elem(int i); inline void ChangeElem(int i, double x); protected: int len; double *val; }; void Array::Alloc(int new_len) { if (len > 0) Free(); len = new_len; val = new double[new_len]; } void Array::Free() { delete[] val; len = 0; } inline double Array::Elem(int i) { assert(i >= 0 && i < len); return val[i]; } inline void Array::ChangeElem(int i, double x) { assert(i >= 0 && i < len); val[i] = x; } І далі Array a; a.Alloc(10); a.ChangeElem(3, 2.78);