Chap10_3. Public and Private Inheritance
- Objects of a publicly derived class can access public members of
the base class
- Objects of a privately derived class canNOT;
must use its own refined public members.
// classes.cpp: publicly and privately-derived;
#include <iostream.h>
class A // base class
{
private:
int prvdA; // (functions have the same access
protected: // rules as the data shown here)
int prtdA;
public:
int pubdA;
void displayA() {
cout << "\n prvdataA = " << prvdA;
cout << "\n prtdataA = " << prtdA;
cout << "\n pubdataA = " << pubdA;
}
};
class A1 : public A // publicly-derived class
{
public:
void update() {
// prvdA = 101; // error: not accessible
prtdA = 102; // ok
pubdA = 103; // ok
}
};
class A2 : private A // privately-derived class
{
public:
void update() {
// prvdA = 201; // error: not accessible
prtdA = 202; // ok
pubdA = 203; // ok
}
void displayA() {
// cout << "\n prvdataA = " << prvdA; // error
cout << "\n prtdataA = " << prtdA;
cout << "\n pubdataA = " << pubdA;
}
};
void main() {
A1 objA1;
// objA1.prvdA = 1; // error: not accessible
// objA1.prtdA = 2; // error: not accessible
objA1.pubdA = 3; // ok (A public to B)
objA1.update();
objA1.displayA();
A2 objA2;
// objA2.prvdA = 4; // error: not accessible
// objA2.prtdA = 5; // error: not accessible
// objA2.pubdA = 6; // error: not accessible (A private to C)
objA2.update();
objA2.displayA();
}