C++ Tutorial/Class/public inheritance

Материал из C\C++ эксперт
Перейти к: навигация, поиск

Base-Class Access Control

<source lang="cpp">#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;

}</source>

Demonstrate public inheritance.

<source lang="cpp">#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; 

}</source>

1 2
3

Inheritance and protected Members

<source lang="cpp">#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;

}</source>

Inherited as public

<source lang="cpp">#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;

}</source>

2 3
6
3 4
12
-1