Study/Object-Oriented

1. 연산자 오버로딩 real, this->img); this->real++; return prev; } int getReal() const { return real; } int getImg() const { return img; } operator int() { return this->real; } }; Complex operator+(const Complex& left, const Complex& right) { int r = left.real + right.img; int i = left.img + right.img; return Complex(r, i); } ostream& operator
기존 문제는 사과의 구매 목적으로 0보다 작은 수를 전달할 수 없고, 함수를 const로 선언하여 코드의 안정성을 높이는 것이었다. 기존대로 구현 후 문득 떠오른 생각은 만약 구매자의 돈이 엄청나게 많다면? 그래도 사과의 개수는 정해져 있으므로 판매자는 구매자의 돈 전부를 수익으로 낼 수 없다. 즉, 아무리 돈이 많아도 판매자가 얻을 수 있는 수익과 구매자가 지불할 금액은 정해져 있다. 이것까지 한 번 구현해보았다. 근데 이상하게 구현했을수도..? 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 5..
포인터 배열은 말 그대로 포인터로 이루어진 배열이다. 앞서 포스팅한 배열 포인터와는 이름부터가 다르다. int a[3][5]; int b[6]; int* p = b; b[0]의 주소값을 100이라고 한다면, b = 100, b + 1 = 104이다. 마찬가지로, p = 100, p + 1 = 104이다. 이는 앞서 포스팅한 내용과 같다. 왜? 배열로 이루어진 포인터니까. 여기서 볼 것은 a와 같이 선언된 배열이다. p = a라는 선언이 될까? 된다면 좋겠지만 선언은 int (*p)[5] = a; 라고 선언해야한다. 그 이유는 아래와 같다. a의 주소값을 200이라고 한다면, a = 200, a + 1 = 220, a + 2 = 240이 된다. 200 204 208 212 216 220 224 228 23..
일단 알아야 할 첫 번째 잡기술 포인터는 자료형에 상관 없이 4byte를 차지한다. 별로 중요해보이지 않다고 느낄수도 있으나 은근 중요한 내용이다. int a[5] = { 2, 4, 6, 8, 10 }; int* p = a; sizeof(int) = 4; sizeof(a) = 20; sizeof(a[0]) = 4; 이런 식으로 공간을 차지하고 있다. 만약 a = 50을 선언하면? --> 에러가 난다. 그 이유는 배열명은 변수가 아니라 시작 주소를 가지는 상수이기 때문이다. 여기서 중요한 점은 배열명은 시작 주소를 가지는 상수라는 부분이다. a[0]의 주소값을 100번지라고 한다면, a = 100 번지 a + 1 = 104번지 이런식으로 읽을 수 있다. 마찬가지로 포인터식으로 표현하자면, a = 100번지..
C++ 공부 중 포기하게 될 뻔한 두 번째 단계. 여러 강의도 찾아보고 책도 읽어가며 나름 열심히 정리했다. 그 중 가장 이해하기 쉬웠던 강의 https://www.youtube.com/watch?v=nQEvGgt1HZ8 -양주종의 코딩스쿨 중 "C언어 포인터 인강 ① 포인터 때문에 미쳐 버릴 것 같은 당신께 포인터는 넘어설 수 있습니다. 한 번에 이해하기 어렵다면 정상입니다. 반복해서 보시길 권합니다." 아직 완벽히 이해했다고 감히 말할 수는 없지만 그래도 처음 접했을 때보다는 많이 알게 되었다. int a = 20; int* p = &a; 이 선언과 동시에 아래의 메모리가 할당된다. 20 바로 위 그림은 a의 메모리를 그림으로 표현한 것이고 a의 시작 주소를 가리키는 것이 포인터이다. a의 주소값을 ..
sy46
'Study/Object-Oriented' 카테고리의 글 목록