맞는데 왜 틀릴까..?

C++ 26

C++ 실습 문제 15 (Class Inheritance)

1. 위의 BaseArray를 상속받아 queue처럼 작동하는 MyQueue 클래스를 작성하라. MyQueue를 활용하는 사례는 아래와 같다. Queue 같은 경우에는 head와 tail의 위치가 맨 끝까지 간다면 다시 처음으로 돌아오는 순환적 구조이기 때문에 MyQueue 클래스 구현부에서 그 부분에 대해 조심해야 한다. 또한 클래스를 상속받는 과정에서 MyQueue의 생성자가 부모 클래스의 BaseArray 클래스를 호출하는 과정이 중요한 포인트다. 2. 위의 BaseArray 클래스를 상속받아 stack으로 작동하는 MyStack 클래스를 작성하라. head와 tail 모두 필요한 queue와 달리 top만 있으면 모든 push와 pop모두 할 수 있기 때문에 구현 부분은 queue보다 현저히 쉽다.

C++ 2022.05.11

C++ 실습 문제 14 (Class Inheritance)

1. Point 클래스를 상속받는 ColorPoint 클래스 만들기 ColorPoint가 Point의 멤버와 함수 모두 상속받아 사용할 수 있다. 2. 업 캐스팅 (부모 클래스가 자식 클래스를 가리킴) 메인 함수 23번째 줄처럼 pp의 형 변환을 통해서 cp객체에 있는 함수 showColorPoint() 함수를 호출할 수 있다. 3. 다운 캐스팅 pBase 포인터로 기본 클래스의 public 멤버만 접근 가능 pDer 포인터로 객체 cp의 모든 public 멤버 접근 가능 메인 함수 33번째 줄 : 반드시 강제 형 변환을 해야 함 4. TV, Wide TV, Smart TV 생성자의 매개 변수 전달 생성자의 순서와 소멸자의 순서를 주의하자 WideTV를 호출하면 먼저 TV의 생성자가 만들어진 후 Wide..

C++ 2022.05.02

C++ 실습 문제 12 (연산자 오버로딩)

연산자 오버로딩은 두 가지 형태가 있다. 1. 외부 함수로 구현되고 클래스에 프렌드로 선언되는 경우 Color operator+(Color op1, Color op2); //외부 함수 class Color { ... friend Color operator+ (Color op1, Color op2); } 2. 클래스의 멤버 함수로 작성되는 경우 class Color { ... Color operator+ (Color op2); } 1. 두 개의 Power 객체를 더하는 + 연산자를 작성하시오 만약 객체끼리의 합이 아니라 객체+정수 라면 Power operator+(int op2)로 연산자 함수를 선언해야 한다. 2. 두 Power 객체를 더하는 += 연산자를 작성하시오 3. 전위 ++a 연산자를 작성하시오..

C++ 2022.04.17

C++ 실습 문제 11 (Friend)

1. 전역 함수 equals()를 프렌드 함수로 선언하여 각 객체를 비교하라 전역변수를 프렌드 함수로 선언하여 클래스 내의 private변수에 접근 가능하게함 2. 다른 클래스에 선언된 멤버 함수 equals()를 프렌드로 선언하여 각 객체를 비교하라 다른 클래스 내에 선언된 멤버함수를 프렌드 함수로 선언 3. 다른 클래스 전체를 프렌드로 선언하여라 다른 클래스 전체를 프렌드로 선언

C++ 2022.04.17

C++ 실습 문제 10 (Static)

1. static 변수를 사용하여 개인 돈과 공금을 관리하는 프로그램을 작성하라. 아래와 같이 클래스 이름과 범위 지정 연산자(::)로도 접근 가능하다. 2. static 변수를 사용하여 현재 생존하고 있는 원의 개수를 출력하는 프로그램을 작성하라. 3. 다음과 같은 static 멤버를 가진 Random 클래스를 완성하라. 그리고 Random 클래스를 이용해 다음과 같이 랜덤한 값을 출력하는 main() 함수도 작성하라. main() 에서 Random 클래스의 seed() 함수를 활용하라.

C++ 2022.04.11

C++ 실습 문제 9 (Default parameter )

1. 함수 f()를 호출하는 경우가 다음과 같을 때 f()를 디폴트 매개 변수를 가진 함수로 작성하라. f(): // 한 줄에 빈칸을 10개 출력한다. f('%'): // 한 줄에 '%"를 10개 출력한다. f('@', 5): // 다섯 줄에 '@'를 10개 출력한다. 2. 다음 클래스에 중복된 생성자를 디폴트 매개 변수를 가진 하나의 생성자로 작성하라. 3. add() 함수를 호출하는 main() 함수는 다음과 같다. 디폴트 매개 변수를 가진 하나의 add() 함수를 작성하고 프로그램을 완성하라.

C++ 2022.04.11

C++ 실습 문제 8 (Reference, Copy Construct)

1. 다음 main() 함수와 실행 결과를 참고하여 half() 함수를 작성하라. 메인 함수의 변수 n을 참조하는 &res를 매개변수로 가진 half 함수를 만들어 리턴 값 없이 n의 값을 변경함. 2. 다음과 같이 선언된 정수를 저장하는 스택 클래스 MyIntStack을 구현하라. 단, MyIntStack 스택에 저장할 수 있는 정수의 최대 개수는 10개이다. 3-1. main()의 실행 결과가 다음과 같이 되도록 Dept 클래스에 멤버들을 모두 구현하고, 전체 프로그램을 완성하라. 10개 점수 입력 >> 10 20 30 40 50 60 70 80 90 100 60점 이상은 4명 3-2 Dept 클래스에 복사 생성자를 제거하라. 일부를 수정하여 복사 생성자가 없는 상황에서도 실행 오류가 발생하지 않게 ..

C++ 2022.04.08

C++ 실습 문제 7 (Copy construct)

1. 복사 생성자를 사용하여 원본 객체 Circle을 복사하고 각각의 면적을 출력하라. 만약 복사 생성자 Circle(const Circle& c)가 선언되어 있지 않는 클래스라면 컴파일러는 자동으로 '디폴트 복사 생성자'를 삽입한다. 2. 깊은 복사 생성자를 사용하여 Person 클래스를 만들어라. 복사 생성자를 호출하는 방법은 아래와 같은 방식도 있는데 얼핏보면 비슷해 보이는 2번째 호출 방식은 정상적으로 복사 생성자를 호출 하지 못한다. this 포인터를 사용하지 않은 코드 3. 묵시적 복사 생성에 의해 복사 생성자가 자동 호출되는 경우 정상 동작일 경우 복사 생성자가 3번 모두 호출됨.

C++ 2022.04.08

C++ 실습 문제 6 (Reference)

1. 참조 매개 변수를 통해 평균을 리턴하고 리턴문을 통해서는 함수의 성공 여부를 리턴하도록 average() 함수를 작성하라 return문으로는 bool 형태로 true,false 성공 여부를 리턴하고, 참조 매개 변수 avg를 통해 실제 값을 리턴 2. 키보드로부터 반지름 값을 읽어 Circle 객체에 반지름을 설정하는 readRadius() 함수를 작성하라. 참조 매개 변수를 통해 객체 Circle에 참조를 전달. 3. 참조 리턴을 통해 문자열을 변경하라. find함수에서 s[index] 공간의 참조 리턴 4. swap함수를 각각 value, address, reference로 구성하라. 값에 의한 호출은 원본 변수에 영향이 없지만 포인터를 이용한 call by address, 참조를 이용한 cal..

C++ 2022.04.05