-
이니셜라이져를 통해 내부 클래스를 변경하지 않고 외부클래스에서 접근할 수 있기 때문에
실제 정보은닉의 효과가 있다고 볼 수 있다.
/*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;
}
-실행결과 및 에러