플밍
-
상속플밍/C++ (overview) 2012. 1. 3. 23:03
2006/08/05 17:24 상속 등장 배경 새로운 클래스가 추가되어도 프로그램의 다른 영역에는 전혀 변경이 가해지지 않았으면 좋겠다.. 예로, 자동차, 기차, 비행기..각각의 클래스를 만들면, 세가지는 모두 '탈것'이라는 공통점을 가지고 있으므로, 분명히 공통적으로 포함되는 멤버를 가지게 될것이다. 같은 문장을 세번이나 쓰는건 낭비다. 그래서 그 공통점만 뽑아서 '탈것'이라는 클래스를 만들면 된다. 그다음, 각각의 교통수단에 상속되어 사용되면 좋다. 즉, 상속을 당하는 base클래스는 좀더 추상적이고, 상속을 하는 derived클래스는 좀더 구체적이다. class AAA{ int top; public: AAA(); AAA(int i); }; class BBB : public AAA{ public: B..
-
modifier 종류 : const, static, explicit, mutable플밍/C++ (overview) 2012. 1. 3. 23:02
2006/08/04 12:54 const (활용예는 다른글에서 써놓았으니 목록에서 찾아보기.) 1. const 멤버 변수 const는 초기화 당시의 값을 절대로 변경할수 없도록 상수화 시키는 키워드 이다. 즉, 선언 당시에 초기화가 되어야 한다. 그런데.. 클래스를 정의할때는 멤버 변수를 초기화 할수 없도록 되어 있다. class AAA{ const int a; public: void func1(){ a = 10; } }; 그렇다고 이렇게 해버리면, 컴파일오류가 난다. a를 위한 메모리 공간이 할당되면서 쓰레기값으로 초기화가 되는데, 쓰레기라고 할지라도 그 자체도 값이기 때문이다. 그럼 어떻게? class AAA{ const int a; public: void func1():a(10){ ; } }; 굵게..
-
복사 생성자플밍/C++ (overview) 2012. 1. 3. 23:00
2006/08/01 21:28 시작에 앞서.. 기본자료형 변수의 초기화 방법은 다음과 같다. [C스타일] int a = 20; [C++스타일] int a(20); 그렇다면 객체도? No prob! [C스타일] Person p = 20; [C++스타일] Person p(20); * C++에서 코딩할때, C스타일로 초기화가 되어 있다면, 컴파일 과정에서 자동으로 C++스타일로 "묵시적인 변환"을 시켜준다. =========================================================== 복사 생성자의 형태 class AAA{ int a; int b; public: AAA(){ .... } AAA(const AAA& a){ .... } }; int main(){ AAA a1(); AA..
-
생성자(constructor), 소멸자(destructor)플밍/C++ (overview) 2012. 1. 3. 22:53
2006/07/30 14:56 생성자(constructor) 1. 생성자의 필요성 class Person{ int a; int b; public : void fun(){}; } int main(){ Person p = {10, 20}; } 위같은 문장은 컴파일 에러가 발생한다. 빨간색부분에서 p를 생성과 동시에 a, b를 초기화 하고 있는데, a,b는 private으로 생성되어 있기 때문이다. 그렇다고 a,b를 public으로 선언하는것은 정보은닉에 위배 되므로, 다음과 같은 방법을 써보자. class Person{ int a; int b; public : void fun(){}; void set(int _a, int _b){ a = _a; b = _b; } } int main(){ Person p; /..
-
정보은닉(information hiding), 캡슐화플밍/C++ (overview) 2012. 1. 3. 22:50
2006/07/29 22:45 좋은 클래스 디자인하기!! => 정보은닉과 캡슐화가 잘 된 클래스 만들기! ========================================================================================= 객체 외부에서 객체 내에 존재하는 멤버 변수에 직접 접근할수 있는 권한을 주면, 에러 발생 가능성이 높아진다. 그러므로 이를 허용하지 않도록 한다. 방법 : 멤버 변수는 private으로 선언한다. ========================================================================================= 관련 있는 데이터와 함수를 하나의 단위로 묶는것. 다시 말해, 관련 있는 데이터와 함수..
-
구조체에서 클래스로!플밍/C++ (overview) 2012. 1. 3. 22:49
2006/07/29 02:10 구조체 : 부류를 형성하는 데이터들을 하나의 자료형으로 정의해서, 관리 및 프로그램 구현에 도움을 주겠다는 의도로 등장. 그런데...... struct AAA{ int data1; int data2; int data3; }; {}안의 내용을 가진 사용자 정의 구조체 AAA타입을 만들었다. 그리고, main에서 써먹어보자. main(){ int a = 10; Person p = {10, 20, 30}; return 0; } 빨간 굵은 글씨로 된 부분은 .c로 컴파일 하면 에러가 난다. 왜? C에서는 사용자가 직접 만든 타입은 primitive type과 동일하게 취급해주지 않는다! (해결을 위해선 앞에 struct를 붙여줘야 한다. => struct Person p; 왜? 왜..
-
동적 메모리 할당(malloc, new)플밍/C++ (overview) 2012. 1. 3. 22:47
2006/07/29 02:07 [C style] int* arr = (int*) malloc (sizeof(int) * size); free arr; [C++ style] int* arr = new int; // 하나의 공간 선언할때 delete arr; int* arr = new int[size]; // 배열 선언할때 delete[] arr; ========================================================== 할당할 공간이 부족하면, NULL포인터를 리턴한다. NULL포인터란 정수 0을 의미한다. (NULL = 0 바꿔써도 상관없다.) 또는 exception을 발생시키는데, catch(bad_alloc xx) {...} 와 같이 사용하면 된다. ===========..