플밍/C++ (overview)
-
복사 생성자플밍/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) {...} 와 같이 사용하면 된다. ===========..
-
레퍼런스(&) , call-by-reference플밍/C++ (overview) 2012. 1. 3. 22:46
2006/07/26 02:33 int val; val의 별명을 ref 라고 붙여주자. 방법 : int &ref = val; val의 이름이 두개 생겼다. val 그리고 ref. int &ref; //ERROR int &ref = 10; //ERROR 변수란? 메모리 공간에 할당된 이름을 의미한다. C에선 한 메모리 공간에 1개만의 이름을 할당할수 있었지만, C++에선 한 메모리 공간에 2개 이상의 이름을 할당 할수 있다. ================================================ 어짜피 같은건데, 어디에 쓸까? 함수 호출에서, call-by-value와 call-by-reference방식이 있다. 전자는, 말 그대로 값을 그대로 복사해서 넘겨주는 방식이다. 그렇다면, call..
-
const, * ..플밍/C++ (overview) 2012. 1. 3. 22:45
2006/07/26 02:14 const int p = 10; int const p = 10; (같은 표현) p = 10; ------------------------------------------------------------------------------ => 컴파일 에러 [p : const int p] ------------------------------------------------------------------------------ const int *p; int const *p; (같은 표현) int t=10,y=20; p = &t; p = &y;