목록전체 글 (283)
Minwoo Dev.
C언어에서는 동적 할당을 위해 malloc, free를 사용했다. #include using namespace std; char *MakeStrAdr(int len) { char *str = (char *)malloc(sizeof(char) * len); return str; } int main(void) { char *str = MakeStrAdr(20); strcpy(str, "Hi !! I am Minu!!"); cout
const 참조자 #include using namespace std; int main(void) { const int num = 10; // 변수같아 보이지만 상수. 정확히는 상수화된 변수 int &ref=num; // 상수화된 const 값을 참조 불가, 변수만 참조가능 num+=10; // const 값은 변경불가! return 0; } 위 코드는 num이라는 변수를 const를 사용하여 변경할 수 없도록 만들었다. 그리고 그 값을 ref가 참조하여, ref를 통해 num을 변경하고자 한다. 위 코드는 오류가 발생한다. 실행이 된다면 num 을 const로 선언한 이유가 없을 것이다. 이럴 때, const 참조자를 사용한다. #include using namespace std; int main(vo..
참조자를 이용해서도 포인터를 사용하는 것처럼 Call-by-reference 형식의 함수를 만들 수 있다. Call-by-reference 함수 외부의 값을 받아와 함수 내부에서 값을 변경할 수 있는 형태 C언어에서는 포인터를 사용하여 함수 외부의 값을 함수 내부에서 변경할 수 있었다. 우선, 포인터를 이용한 기존의 방식부터 살펴보자. 포인터를 이용한 Call-by-reference 함수 #include using namespace std; void Swap(int *n1, int *n2) { int temp = *n1; *n1 = *n2; *n2 = temp; } int main(void) { int num1 = 3, num2 = 5; cout
참조자 참조자는 변수에 다른 이름, 즉 별명을 붙여주는 것이다. #include using namespace std; int main(void) { int num = 20; cout
문제 1 앞서 제시한 문제 04-2를 해결하였는가 ? 당시만 해도 생성자를 설명하지 않은 상황이기 때문에 별도의 초기화 함수를 정의 및 호출해서 Point, Circle, Ring 클래스의 객체를 초기화하였다. 이때 구현한 답에 대해서 모든 클래스에 생성자를 정의해보자. 04-2의 코드 #include using namespace std; class Point { private: int xpos, ypos; public: void Init(int x, int y) { xpos = x; ypos = y; } void ShowPointInfo() const { cout
문제 다음의 Point 클래스를 기반으로 하여(활용하여) 원을 의미하는 Circle 클래스를 정의하자. class Point{ private: int xpos, ypos; public: void Init(int x, int y){ xpos=x; ypos=y; } void ShowPointInfo() const{ cout
문제 Chapter 03에서 제시한 과일장수 시뮬레이션 예제 FruitSaleSim1.cpp에서 정의한 두 클래스의 멤버변수는 private로 선언이 되어있다. 그러나 다음 조건을 유지할 수 있는 장치는 아무것도 되어있지 않다. 사과의 구매를 목적으로 0보다 작은 수를 전달할 수 없다. 위의 제약사항을 항상 만족시킬 수 있도록 예제를 변경하고, 예제의 안전성을 높일 수 있도록 일부 함수를 const로 선언해보자. FruitSaleSim1.cpp #include using namespace std; class FruitSeller { private: int APPLE_PRICE; int numOfApples; int myMoney; public: void InitMembers(int price, int n..
문제 1 계산기 기능의 Calculator 클래스를 정의해 보자. 기본적으로 지니는 기능은 덧셈, 뺄셈, 곱셈, 그리고 나눗셈이며, 연산을 할 때마다 어떠한 연산을 몇 번 수행했는지 기록되어야 한다. 아래의 main 함수와 실행의 예에 부합하는 Calculator 클래스를 정의하면 된다. 단, 멤버변수는 private로, 멤버함수는 public으로 선언하자. 이렇게 선언하는 이유에 대해서는 다음 Chapter에서 자세히 언급한다. int main(void) { Calculator Cal; cal.Init(); cout
문제 2차원 평면상에서의 좌표를 표현할 수 있는 구조체를 다음과 같이 정의하였다. struct Point { int xpos; int ypos; }; 위의 구조체를 기반으로 다음의 함수를 정의하고자 한다. (자세한 기능은 실행의 예를 통해서 확인하도록 한다.) void MovePos(int x, int y); // 점의 좌표이동 void AddPoint(const Point &pos); // 점의 좌표증가 void ShowPosition();// 현재 x,y 좌표정보 출력 단, 위의 함수들을 구조체 안에 정의를 해서 다음의 형태로 main 함수를 구성할 수 있어야 한다. int main(void) { Point pos1 = {12, 4}; Point pos2 = {20, 30}; pos1.MovePos(..
문제 1 다음 표준함수를 호출하는 예제를 만들되, C++의 헤더를 선언해서 만들어보자. 그리고 예제의 내용은 상관이 없지만, 아래의 함수들을 최소 1회 이상 호출해야 한다. 참고로 다음 함수들은 C언어의 경우 에 선언되어 있다. strlen : 문자열의 길이 계산 strcat : 문자열의 뒤에 덧붙이기 strcpy : 문자열 복사 strcmp : 문자열의 비교 정답 #include #include using namespace std; int main(void) { char *s1 = "Hello World!"; char *s2 = "HI There!"; char s3[50]; cout