상향,하향형변환

c++ 2018.06.05 14:53

#include<iostream>

#include<string>

using namespace std;


class Point {

int x, y;

public:

void set(int x, int y) {

this->x = x;

this->y = y;

}

void showPoint() {

cout << " {" << x << "," << y << "}" << endl;

}

};


class ColorPoint :public Point {

string color;

public:

void setColor(string color) {

this->color = color;

}

void ShowColorPoint();

};


void ColorPoint::ShowColorPoint() {

cout << color << ";";

showPoint();

}



int main() {

Point A;//기본클래스의 객체생성

ColorPoint B; //파생클래스의 객체생성

A.set(5, 10); //기본클래스의 멤버호출

A.showPoint();

B.set(20, 40);  //파생클래스의 객체인  B는 부모것을 쓸수있다

B.showPoint();

B.setColor("red");

B.ShowColorPoint();


//상향형변환    자식->부모

ColorPoint cp;

ColorPoint *pDer = &cp;


Point *pBase = pDer;

Point *qwe = new ColorPoint();  // 변환

cp.set(100, 200); // 부모니까 자기것 접근가능

pDer->showPoint(); // 자식

pBase->set(800, 900);

pBase->showPoint();

pDer->showPoint();


//하향형변환   부모->자식                  color관련=자식 , set,point = 부모

{

ColorPoint cp;

ColorPoint *down;

Point *pBase = &cp;   //자식의주소링크 할당

down = (ColorPoint *)pBase;  //변환 , 강제로 자식이 되었음


down->set(9, 7);

down->showPoint(); //부모값 접근

down->setColor("yellow");

down->ShowColorPoint(); //자식값 접근

}

}

'c++' 카테고리의 다른 글

상향,하향형변환  (0) 2018.06.05
정적멤버변수 , 상속과 다형성  (0) 2018.06.04
복사생성자 실습 소스  (0) 2018.05.29
프렌드함수  (0) 2018.05.28
연산자 중복  (0) 2018.05.21
객체포인터 실습문제 2번 5번 6번  (0) 2018.05.21
Posted by 대엽


티스토리 툴바