C++ Tutorial/Class/protected

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

Demonstrate protected members.

<source lang="cpp">#include <iostream> using namespace std;

class BaseClass { protected:

 int i, j; // private to BaseClass, but accessible to DerivedClass 

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 may access BaseClass"s i and j 
 void setk() { 
    k = i*j; 
 } 

 void showDerivedClass() { 
    cout << k << "\n"; 
 } 

};

int main() {

 DerivedClass ob; 

 ob.set(2, 3); // OK, set() is public in BaseClass 
 ob.show();    // OK, show is public BaseClass 

 ob.setk(); 
 ob.showDerivedClass(); 

 return 0; 

}</source>

2 3
6

Protected Base-Class Inheritance

<source lang="cpp">#include <iostream> using namespace std;

class base { protected:

 int i, j; // private to base, but accessible by derived

public:

 void setij(int a, int b) { i=a; j=b; }
 void showij() { cout << i << " " << j << "\n"; }

};

// Inherit base as protected. class derived : protected base{

 int k;

public:

 // derived may access base"s i and j and setij().
 void setk() { setij(10, 12); k = i*j; }
  
 // may access showij() here
 void showall() { cout << k << " "; showij(); }

};

int main() {

 derived ob;
  
 ob.setk(); // OK, public member of derived
 ob.showall(); // OK, public member of derived
  
 return 0;

}</source>

protected fields: private to base, but accessible by derived

<source lang="cpp">#include <iostream> using namespace std; class base { protected:

 int i, j; //protected fields: 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:

 void setk() { 
    k=i*j; 
 }
 void showk() { 
   cout << k << "\n"; 
 }

}; int main() {

 derived ob;
 ob.set(2, 3);
 ob.show();
 ob.setk();
 ob.showk();
 return 0;

}</source>

2 3
6