본문 바로가기

C++문법 공부

(16)
객체 맴버로 열거체(enum)사용하기 //Point 클래스를 정의한다. class Point { public: enum { MIN_X = 0, MAX_X = 100, MIN_Y = 0, MAX_Y = 100 }; //맴버 함수 void Print() const; void Offset(int x_delta, int y_delta); void Offset(const Point& pt); //생성자들 Point(); Point(int initialX, int initialY); Point(const Point& pt); //접근자 void SetX(int value); void SetY(int value); int GetX() const { return x; }; int GetY() const { return y; }; private: int x..
정적 맴버 함수를 사용해서 객체를 생성하기 정적 맴버 static 함수와 변수를 활용하는 예제를 만들어 보았습니다. #include #include using namespace std; //Movie Class class Movie { public: string name;//영화 이름 int year;//출시 년도 int number;//영화 넘버 void Print(); void ShowNumber(); private: //생성자 Movie(const string& name_arg, const int& year_arg, int movieNumber_arg); public: //정적 맴버 static int movieNumber; static Movie* CreateMovie(const string&, const int& year_arg); };..
맴버함수에 포인터 사용하기 포인터의 개념에 대해서는 C언어 문법을 공부 할 때에 계속 반복 했던 내용입니다. 복습하는 느낌으로 한번 더 잡고 가겠습니다. 포인터를 사용하는데에는 여러가지 장점이 있기 때문입니다. 그중 가장 큰 장점은 메모리 절약 이라고 생각됩니다. 큰 구조체 같은 경우 직접 전달 하는것 보다 포인터를 사용하는 것이 메모리 사용량을 크게 줄일 수 있을 것이고요. 두번째로 동적으로 메모리를 할당할 수 있는 점입니다. 동적으로 메모리 할당이 가능하다는 말이 어떤 것을 의미하는지 알아보죠. 포인터의 장점은 유연하다는 것입니다. 대상이 어떤 녀석이건 간에 원형(prototype)과 주소만 알고 있다면 그 역할을 수행하도록 할 수 있다는 점이 포인터의 정체성입니다. 이것을 활용해서 런타임중에 메모리를 할당할 수가 있는 것이고..
생성자 맴버 초기화 리스트를 사용한 객체 맴버의 초기화 객체 맴버중에 const 속성을 가진 맴버 변수나 래퍼런스(참조) 타입의 맴버변수를 가진 경우가 있을 수 있습니다. 레퍼런스 타입이나 읽기전용 타입이 없을 경우 정상적으로 빌드 되는 모습입니다. 사례1. 읽기전용 타입 const 맴버변수를 선언 하고 객체를 선언 했는데 에러가 발생합니다. 사례2. 레퍼런스(참조) 타입 맴버변수를 선언 했을 때에도 에러가 발생합니다. 두가지 사례에서 객체를 선언 한 후에 초기화를 하려 했더니 컴파일러가 에러를 알리고 있습니다. 레퍼런스 타입이나 const 속성을 가진 맴버 변수에 값을 할당하지 않고 객체를 선언 할 경우 무조건 생성자를 참조해야만 한다는 (지금 생성자가 없다는)에러를 보게 됩니다. 두가지 타입은 반드시 값을 가진 상태로 초기화를 해줘야 하기 때문입니다. 에..
복사 생성자 #include using namespace std; //Point 클래스를 정의한다. class Point { public: //맴버 변수 int x, y; //맴버 함수 void Print(); //생성자들 Point();//디폴트 생성자 Point(int initialX, int initialY);//인자가 있는 생성자 Point(const Point& pt);//복사 생성자 }; Point::Point(const Point& pt) { cout
인라인 함수( inline function) 인라인 함수 라는 말을 처음 들었을 때는 무척 생소 했습니다. 인라인 스케이트도 아니고.. 무슨 인라인 함수야? 라고 생각 했는데 그렇게 어려운 개념은 아니었습니다. #include using namespace std; inline void PrintValue(int x){cout
범위 해결 연산자 ( Scope Resolution Operator) #include using namespace std; int num = 0; int main() { int num = 10; cout
C++ 객체 지향 프로그래밍의 시작 객체 지향 프로그래밍을 배워야 하는 이유 객체 지향 프로그래밍은 프로그래밍을 만드는 방법 중에 하나 입니다. 프로그램을 만드는 방법은 다양한 방법이 존재하는데, 그냥 의식의 흐름대로 만들기도 하나의 방법이 될 수 있습니다. 많은 개발방법 중에 객체지향 프로그래밍을 한마디로 정의한다면. 객체를 기본 단위로 해서 만들기 라고 할 수 있습니다. "의식의 흐름대로 만들기" 기법을 사용해서 건물을 짓는다고 가정해 보겠습니다. 이 방법으로 "높이 1m돌담 쌓기", 가능하겠죠. "해변에서 모래성 짓기". 네, 아주 효율적인 방법일것 같아요. 롯데월드 타워 짓기..는 별로 권장할만한 방법이 아닐것 같습니다. 이렇게 크고 견고하고, 미적으로도 아름다운 건물을 지으려면 보다 체계적인 방법이 필요합니다. 프로그램을 설계할 ..