상세 컨텐츠

본문 제목

상속에서의 이니셜라이져 역할

C++/상속

by nowpassion 2008. 5. 1. 15:41

본문

- 이니셜라이져를 통해 내부 클래스를 변경하지 않고 외부클래스에서 접근할 수 있기 때문에
  실제 정보은닉의 효과가 있다고 볼 수 있다.

/*22.cpp*/
#include <iostream>
using std::endl;
using std::cout;

class Point
{
    int x_ptr;
    int y_ptr;
   
public:
    Point(int _x = 0, int _y = 0){
        x_ptr = _x;
        y_ptr = _y;
      }
     
      void getPoint(){
      cout << "X좌표 :" << x_ptr << endl;
        cout << "Y좌표 :" << y_ptr << endl;
      }
};


class Line : public Point
{
    int length;

public:
    //상속받은 인자를 초기화 하는 방법
    //기본적으로 상속하는 클래스의 멤버변수는 모두 정보은닉을 위해 private로 선언되어있다.
    //그러므로 일반적으로 접근할 수 없다.
    // 아래부분은 컴파일 에러(x_ptr, y_ptr은 private)
    Line(int _x = 0, int _y = 0) {
       x_ptr = _x;
       y_ptr = _y;
    }

    //아래 코드는 컴파일 OK(이니셜라이져 사용)
    Line(int _x = 0, int _y = 0) : Point(_x, _y){
        length = _x + _y;
    }

    int getLine(){
        return length;  
       }
};

int main()
{
    Line line(3,8);
    cout << "길이는 " << line.getLine() << endl;   
    system("pause");
    return 0;
}

-실행결과 및 에러
사용자 삽입 이미지





사용자 삽입 이미지










'C++ > 상속' 카테고리의 다른 글

동적할당을 통한 has a관계  (0) 2008.05.05
has-a 관계(복합관계)  (0) 2008.05.05
is a 관계  (0) 2008.05.05
상속의 방법  (0) 2008.05.05

관련글 더보기