프로그래밍 언어 (28) 썸네일형 리스트형 04-3 생성자와 소멸자 by 윤성우의 열혈 C++ 생성자 클래스의 이름과 함수의 이름이 동일하다. 반환형이 선언되있지 않으며 실제로 반환하지 않는다. 객체 생성시 딱 한번 호출된다. class Simple { private: int num; public: Simple(int n) { num = n; } }; int main() { Simple sp(30); sp.PrintNum(); return 0; } 객체 생성은 Simple sp(30) 으로 생성자에게 전달할 인자의 정보를 추가해야함 함수의 특징을 가지고 있다. ex) 오버로딩(매개변수 개수만 다르다면 같은 이름으로 선언가능한것) 가능, 매개변수 디폴트 값 설정 가능 매개변수가 선언되있지 않을때 아래와 같은 코드가 가능하다. Simple sp(30) Simple sp Simple * ptr1 = n.. 왜 헤더파일에서 선언과 정의를 따로 해야되는가? 오늘 올린 04-1, 04-2 문제 코드는 모두 헤더파일에서 선언을 하고 cpp 파일을 만들어서 따로 정의를 했다. 책에서 이를 권장하는데 내가 구체적인 이유를 알지 못해서 습관을 들일 필요를 알고싶어 검색해보았다. 그 이유로는 빌드시간을 개선시킬 수 있다. 정의 소스없이 코드를 연결시킬수 있다. 모든 함수를 'inline'으로 만들지 않을 수 있다. #include를 통해서 가져온다는 것은 모든 코드를 복사 붙여넣기 하는 것과 똑같이 동작된다고 한다. 만약 모든 코드가 헤더파일에 있다면 소규모 프로젝트에서는 상관이 없지만 규모가 점점 커질 수록 어마어마한 양의 코드를 복붙하는 것과 같다. 이에 빌드시간이 오래걸리게 된다. 프로그램을 만들때 함수를 정의하지 않고 이러한 기능이 있는 함수를 만들 것이라고 .. Chapter 04-2 캡슐화 by 윤성우의 열혈 C++ 클래스안에 외부 클래스를 선언할 수 있다. 이를 통해 관련이 있는 함수나 변수등을 한 클래스에 모을 수 있는데 하나의 목적아래 여러 기능들을 모아둔 것을 캡슐화라고 한다. 예를 들어 코감기는 항상 기침, 콧물을 동반한다고 하자 그렇다면 코감기를 낫기위해서 기침약과 콧물약을 같이 복용해야 한다. 여기에 정해진 순서가 있다면 캡슐화는 더욱 더 필요한 과정이된다. 캡슐화를 하는 것은 쉽지만 어디까지 캡슐화를 해야되는지 정하는 것이 어렵다. 가령 "감기는 코감기, 목감기, 몸살감기가 동반되기도 하고 아니기도 한다" 이 경우에 답을 내리기란 쉽지 않다. 따라서 캡슐화는 오랜 시간을 거쳐서 숙달하는 것이 중요하다. 문제 04-2 나의 답 Point.h #ifndef __POINT_H__ #define __POINT.. Chapter 04-1 정보은닉 by 윤성우의 열혈 C++ 프로그래머의 실수에 대한 대책을 마련해야 한다. 변수값을 제한된 방법으로만 저장 혹은 변경할 수 있도록 하고 실수를 한다면 실수를 쉽게 발견하도록 해야한다. 따라서 변수에 직접적인 접근을 막고 함수로 접근시킬 필요가 있다. 멤버변수를 private로 선언을 하고 변수에 접근하는 함수를 public으로 선언해서 제한된 방법으로 접근하게끔 하는 것이 정보은닉이다. Point.h #ifndef __POINT_H__ #define __POINT_H__ class Point { private: int x; int y; public: bool InitMembers(int xpos, int ypos); int GetX() const; int GetY() const; bool SetX(int xpos); bool Se.. 이전 1 2 3 4 다음