Материал из C\C++ эксперт
Base-Class Access Control
#include <iostream>
using namespace std;
class base {
int i, j;
public:
void set(int a, int b) { i=a; j=b; }
void show() { cout << i << " " << j << "\n"; }
};
class derived : public base {
int k;
public:
derived(int x) { k=x; }
void showk() { cout << k << "\n"; }
};
int main()
{
derived ob(3);
ob.set(1, 2); // access member of base
ob.show(); // access member of base
ob.showk(); // uses member of derived class
return 0;
}
Demonstrate public inheritance.
#include <iostream>
using namespace std;
class BaseClass {
int i, j;
public:
void set(int a, int b) {
i = a; j = b;
}
void show() {
cout << i << " " << j << "\n";
}
};
class DerivedClass : public BaseClass {
int k;
public:
DerivedClass(int x) {
k = x;
}
void showDerivedClass() {
cout << k << "\n";
}
// i = 10; // Error! i is private to BaseClass and access is not allowed.
};
int main()
{
DerivedClass ob(3);
ob.set(1, 2); // access member of base class
ob.show(); // access member of base class
ob.showDerivedClass(); // uses member of derived class
return 0;
}
1 2
3
Inheritance and protected Members
#include <iostream>
using namespace std;
class base {
protected:
int i, j; // private to base, but accessible by derived
public:
void set(int a, int b) { i=a; j=b; }
void show() { cout << i << " " << j << "\n"; }
};
class derived : public base {
int k;
public:
// derived may access base"s i and j
void setk() { k=i*j; }
void showk() { cout << k << "\n"; }
};
int main()
{
derived ob;
ob.set(2, 3); // OK, known to derived
ob.show(); // OK, known to derived
ob.setk();
ob.showk();
return 0;
}
Inherited as public
#include <iostream>
using namespace std;
class base {
protected:
int i, j;
public:
void set(int a, int b) {
i=a;
j=b;
}
void show() {
cout << i << " " << j << "\n";
}
};
class derived1 : public base {
int k;
public:
void setk() {
k = i*j;
}
void showk() {
cout << k << "\n";
}
};
class derived2 : public derived1 {
int m;
public:
void setm() {
m = i-j;
}
void showm() {
cout << m << "\n";
}
};
int main()
{
derived1 ob1;
derived2 ob2;
ob1.set(2, 3);
ob1.show();
ob1.setk();
ob1.showk();
ob2.set(3, 4);
ob2.show();
ob2.setk();
ob2.setm();
ob2.showk();
ob2.showm();
return 0;
}
2 3
6
3 4
12
-1