언어는 과-학인가요?/C++

Protected, Private, Public 함수 : 이동시키기

이원자 탄소 2020. 10. 31. 13:23
728x90
#include <iostream>

using namespace std;

class Point {
public:
	int x, y;

public:
	//생성자함수: 클래스를 객체화시킬때 값을 초기화 시키는 기능
	//생성자 함수는 반드시 클래스명하고 같아야 한다
	//함수를 오버로딩 시켜서 여러개의 인수 형태를 지정해서 초기화 가능
	Point();

	void moveLeft(); //좌표 왼쪽으로 이동시키는 함수
	void moveRight(); //좌표 오른쪽으로 이동시키는 함수
	void print(); //좌표 출력하는 함수

	
};

class childPoint : public Point
{
public:
	void moveUp();
	void moveDown();
};


//생성자 함수 구현
//객체 생성시 x좌표 50 y좌표 50

Point::Point() {
	x = 50;
	y = 50;
	print();
}

//왼쪽으로 이동하는 함수
void Point::moveLeft() {
	x = x - 1;
	print();
}

//오른쪽으로 이동하는 함수
void Point::moveRight() {
	y = y - 1;
	print();
}

void Point::print()
{
	cout << x << " " << y << endl;
}

void childPoint::moveUp() {
	x = x + 10;
	print();
}

void childPoint::moveDown() {
	y = y - 10;
	print();

}


int main() {

	Point p;
	childPoint cp;

	cout << "------------------" << endl;
	p.moveLeft();
	p.moveLeft();
	cout << "------------------" << endl;
	p.moveRight();
	p.moveRight();
	cout << "------------------" << endl;
	cp.moveUp();
	cp.moveUp();
	cout << "------------------" << endl;
	cp.moveDown();
	cp.moveDown();


	return 0;
}

#include <iostream>

using namespace std;

class PointOne {
public:
	PointOne()
	{
		cout << "PointOne 생성자임" << endl;
		cout << "==============================" << endl;

	}
	~PointOne()
	{
		cout << "PointOne 소멸자임" << endl;
		cout << "==============================" << endl;

	}

public:
	int one_pubx;

protected:
	int one_prox;

private:
	int one_prix;

public:
	void output() {
		cout << "public one pubx" << one_pubx << endl;
		cout << "public one prox" << one_prox << endl;
		cout << "public one prix" << one_prix << endl;

	}
};

class PointTwo :public PointOne {
public:
	PointTwo()
	{
		one_pubx = 1000;
		one_prox = 2000;
		//one_prix = 3000; 부모 클래스의 멤버 변수가 private이라서 
		cout << "PointTwo 생성자임\n" << endl;
	}

	~PointTwo()
	{
		cout << "PointTwo 소멸자임\n" << endl;
	}
};

int main() {
	PointOne p1;
	PointTwo p2;

	cout << "-----------------------" << endl;
	p1.output();
	cout << "-----------------------" << endl;
	p2.output();
	cout << "-----------------------" << endl;

	//부모 클래스로 만든 p1객체에서 값 지정
	p1.one_pubx = 500;
	//p1.one_prox=2000; main에서 접근안됨

	p2.one_pubx = 700;

	cout << "---------p1 객체 시작----------" << endl;
	p1.output();
	cout << "---------p1 객체 끝----------\n" << endl;

	cout << "---------p2 객체 시작----------" << endl; 
	p2.output();
	cout << "---------p2 객체 끝----------" << endl;
}

728x90