Do.

명품 C++ Programming - 1장 연습문제(이론) 짝수 정답 본문

명품 C++ Programming(2018판)

명품 C++ Programming - 1장 연습문제(이론) 짝수 정답

Hey_Hen 2022. 2. 19. 02:47

(네이버 블로그에서 이전 작성한 글입니다)

 

2. ④

- 기계어로 프로그램을 작성하는 것은, 그만큼 사이드이펙트를 줄일 수 있지만, 생산성 측면에서 완전히 낭비입니다. 좋은 개발자가 되는 지름길로는 보기 힘듭니다.

 

4. ②

- C언어는 절차 지향 프로그래밍 언어입니다.

 

6. ②

객체 지향의 특성은 다음과 같습니다.

- Encapsulation

- Inheritance

- Polymorphism

- Abstraction

https://www.codeproject.com/Articles/22769/Introduction-to-Object-Oriented-Programming-Concep#OOP

 

Introduction to Object Oriented Programming Concepts (OOP) and More

This article helps to understand OOP concepts, focusing on .NET/ C#. This is written in the form of asking questions and writing answers to them, making it easy to understand.

www.codeproject.com

 

8. ④

C++는 클래스 외부에서 변수를 선언할 수 있기 때문에 캡슐화 원칙이 무너져 순수 객체지향 언어로 보기 어렵다.

현대 C++언어와 모던한 언어들 모두 멀티패러다임이기 때문에 크게 문제되는 부분은 아니다.

 

10. ②

C++ 컴파일러가 하나가 아닌데, 표준 C++ 로 작성하게 되면, 컴파일러가 달라도 문제없이 동일하게 동작한다.

 

12.

  • 캡슐화: TV를 예로 들자면, TV에는 다양한 객체의 집합인데, 전원 버튼, 외부 연결 컴포넌트, 디스플레이, 스피커 등으로 구성되어있다. 각 컴포넌트 들은 각자의 역할만 수행할 뿐, 다른 컴포넌트들이 무슨 일을 하는지는 알 수도 없고, 관심도 없습니다. 디스플레이가 안나와도 스피커는 나오거든요. 스피커 컴포넌트에 내부에는 다른 컴포넌트로 부터 받은 오디오 신호를 내부적으로 코딩하고 아마 play()등의 메서드로 출력할겁니다. 내부적으로 코딩하는 부분을 processing() 메서드라고 한다면 해당 processing 메서드는 스피커 안에서만 동작하지, 전원 컴포넌트가 speaker.processing() 같은 형식으로 호출을 할 수는 없습니다.
  • 다형성: 오퍼레이터를 예를 들어 설명하라고 되어있는데, 수라는 모델이 있다고 가정했을 때 수는 기본적으로 사칙연산이 가능할 겁니다. 마찬가지로 대소관계 비교도 가능 할 것이구요, 이 수라는 모델을 서브클래싱 하면, 실수, 정수 등이 될 수 있습니다. 실수와 정수는 '수' 개념을 서브클래싱 한 것으로, '수'에서 가능했던 사칙연산과 대소비교가 가능하게 되는 것입니다. 실제로 구하는 방법은 무슨 수인가에 따라서 조금씩 달라집니다. 프로그래밍에서는 상속에 의해서 나타나고, 메서드 오버라이딩, 오퍼레이터 오버라이딩 으로 활용됩니다.
  • 상속성: 좀더 쉬운 예시를 들면, 사람이라는 부모 클래스가 있고, 사람을 상속한 학생 클래스가 있다고 가정하면, 사람은 통상적으로 이름이 있고, 나이, 생일 등이 있습니다. 이를 상속한 학생 클래스는, 이름, 나이 생일을 포함한 학교, 학년, 시험 성적등이 있겠죠

 

14. ④

Type Conversion은 C도 된다.

 

16. ①

C++ 소스파일은 텍스트 파일이다. 따라서 메모장으로도 편집이 가능하다.

 

18. 

그림은 링킹을 설명하는 그림으로, 링킹이란 여러 실행 코드들을 컴파일 하여 나온 objㅇ파일과 라이브러리 등을 결합하는 과정으로, 이를 한데 묶어 실행파일을 만들기 위해 필요한 작업이다. 만약 링킹 하는 과정에서 참조하는 코드를 찾을 수 없다면, 링크 오류가 발생한다. 

링킹 과정에서 실행파일로 같이 묶지 않고, 실행파일 시점에 라이브러리를 참조하도록 하는 것이 바로 Dynamic Linking Library이다.

 

20.

c++ 20 기준으로도 netowrk library를 포함하고 있지 않습니다. c++ 23에 network를 의제가 포함되어 있긴 하지만, 확정된 사항이 아닌 것으로 알고있습니다. c++ 20 때도 포함된다는 얘기도 있었으니까요

처음 c++를 공부할 때, 이부분이 상상히 궁금했는데, 참고할만한 블로그 글이 있습니다.

https://quuxplusone.github.io/blog/2019/10/09/why-no-networking/

 

Why doesn’t C++ have networking support?

Recently, in a discussion of the Networking TS on one of WG21’s internal “reflector” mailing lists, Bjarne Stroustrup wrote:

quuxplusone.github.io

 

22. 

IDE라고 줄여말하는 이것은, 프로그램을 개발하는데 필요한 기능을 모아놓은 프로그램입니다. 코드를 작성하는데에는 메모장만 있으면 되지만, 생산성을 높이기 위해, 자동완성, 편리한 빌드세팅, 컴파일러 등 다양한 기능을 모아놓은것이 IDE이죠. IDE마다 목적이 다르기 때문에 개발하고자 하는 목적에 따라 IDE선택을 하시면 되겠습니다.

Windows플랫폼에서는 Visual Studio가 강력할 것이고, 윈도우 GUI를 작성하는데에는, qt도 존재합니다.

Apple 플롯폼은 Xcode가 독보적이고, 안드로이드 앱 개발에는 안드로이드 스튜디오, Java진영은 이클립스와 InteliJ가 있습니다.

 

 

Comments