Coding/VB C C++

[C&C++] Inheritance between classes

smores 2007. 12. 18. 06:44

구현 방식

class derived_class_name: public base_class_name
{ /*...*/ };

위에서 public 은 파생 클래스의 외부에서 사용할 수 있는 멤버의 엑세스 권한 필터로 생각하면 쉽다.

예를 들어 위의 선언에서 public 으로 되어 있으면 베이스 클래스의 멤버 중 public 멤버들은 파생 클래스의 외부에서도 사용할 수 있지만, protected 또는 private 로 되어 있으면 외부에서 사용 불가능하다. 하지만, 파생 클래스 내의 함수들은 이와 상관 없이 원래의 엑세스 권한 그대로 베이스 클래스 내의 public, protected 멤버는 액세스 가능하다. 

예제

// derived classes
#include <iostream>
using namespace std;

class CPolygon {
  protected:
    int width, height;
  public:
    void set_values (int a, int b)
      { width=a; height=b;}
  };

class CRectangle: protected CPolygon {
  public:
    int area ()
      { return (width * height); }
    void set_values2 (int a, int b)
      { width=a; height=b; }
  };

class CTriangle: public CPolygon {
  public:
    int area ()
      { return (width * height / 2); }
  };
 
int main () {
  CRectangle rect;
  CTriangle trgl;
//  rect.set_values (4,5); // produce compile time error
  rect.set_values2 (4,5);
  trgl.set_values (4,5);
  cout << rect.area() << endl;
  cout << trgl.area() << endl;
  cin.get();
  return 0;
}



'Coding > VB C C++' 카테고리의 다른 글

Global conditional define (#const) statements in vb.net  (0) 2016.02.03
예술적인 C 코드  (0) 2008.02.19
[C&C++] friend  (0) 2007.12.17
[C&C++] static member  (0) 2007.12.17
[C&C++] constructor, destructor  (0) 2007.12.17