안녕하세요 엘체프 GG 입니다.
머리에는 안들어오지만 벌써 C++ 들어 왔네요.
객체지향이 시작되는데... 소스만 끄적여 볼꼐요.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 | #pragma once class Point { private : int x, y;// 캡슐화( public: int x, y;//x,y좌표 맴버(필드)변수선언 //생성자,소멸자: 맴버 메서드(함수) //reture 자료형을 표시(x) //반드시 클래스와 동명!! //자바에서는 소멸자(X) //생성자(constructor) //소멸자(destructor) //기본 생성자,소멸자 묵시적 (implicit) 선언 가능. Point();//기본 생성자(구축자) ~Point(); //기본 소멸자 //기본 생성자,소멸자 안 써도 된다. //생성자 오버로딩(overloding) Point(int x, int y); //일반 맴버 메서드 : 추상 메서드(함수의 선언부) : //함수의 몸통이 없고 선언부만 있는 함수 //메뉴, 설계도의 역활 void setPosition(int _x, int _y); void Move(int _x, int _y); void Show(void); }; ---------------------------------------------------------------------------------------------------- #include <iostream> //c언어의 stude.h와 같은 역활의 header #include "Point.h" using namespace std; // //header 파일(추상부) --> 몸통(body) : 구현부, 구체부, 실체화, 구상 //implementaion, realization, concrete //기본 생성자 Point::Point(void) { cout << "기본생성자 입니다." << endl; } Point::~Point(void) { cout << "기본 소멸자 입니다." << endl; } //set-method = setter : 설정(대입)하는 함수 void Point::setPosition(int _x, int _y){ cout << "SetPosition 임돠" << endl;//log기록 x = _x;//맴버 필드 <--인자(대입) y = _y; } void Point::Move(int x, int y){ cout << "Move 함수임돠" << endl; this->x += x; //증가 이동 한다. this->y += y; } void Point::Show(void){ cout << "Show 출력하는놈이다" << endl; cout << "(" << x <<"," <<y<<")" << endl; } Point::Point(int x, int y){ cout << "오버로딩된 생성자" << endl; this->x = x; this->y = y; } ------------------------------------------------------------------------------------------------------------ #include <iostream> #include "Point.h" using namespace std; int main(void){ Point p1, p2(10,10); // 객체 변수(인스턴스) 선언,생성 //p1 : 기본 생성자 묵시적 사용 //p2(10,10) : 오버로딩된 생성자 //메서드명 묵시적 사용, 인자는 명시적 사용 //Java : Point p1 = new Point();, new,생성자가 명시적으로 사용되어야함! //C++ 생성자가 미사용(X), 객저 생성시 묵시적 언급! p1.setPosition(20, 30); //p1.x = 20;//초기화에 20을 대입 //p1.y = 30; p1.Move(100, 100); p2.Move(200, 200); p1.Show(); p2.Show(); system("PAUSE"); return 0; } | cs |
이상 감사합니다.
'스터디 > C,C++' 카테고리의 다른 글
C++ 문자열 경사면 인쇄하기 (9) | 2018.02.19 |
---|---|
C++ 클래스 실습과제 (7) | 2018.02.19 |
C 문자열 거꾸로 출력하기 (8) | 2018.02.12 |
C 문자열 자르기 문제 (7) | 2018.02.12 |
구조체 (6) | 2018.02.05 |