오늘도 겨우겨우 저녁을 먹고 18:58에 출석!

 

 

========================================    1    =====================================

(19:03 ~ 19:54)

 

오늘은 c++의 예외처리 및 I/O에 대해 수업을 진행한다고 하셨습니다.

 

임베디드 시스템의 경우가 가장 이와 같은 처리에 민감하다고 사례와 함께 소개해 주셨습니다.

 

예외처리의 가장 큰 목적은 프로그램이 중간에 중단되는 것을 막아주고 추가적으로 다른 작업을 할 수 있도록 하는것입니다.

 

 c++에서는 try , throw , catch 라는 3가지의 키워드를 예외처리를 위해서 제공해줍니다.

 

예외처리를 해야하는 대표적인 것 중에 배열의 크기에 관한 것이 있습니다. 저 또한 배열의 크기를 넘어가는 값에 접근을 하는 경우가 발생하는 것을 본 적이 있어서 이러한 부분에 예외처리를 했던 기억이 납니다.

 

catch는 특정 type의 객체를 지정하여 지정된 예외 객체만을 처리할 수 있습니다.

 

실습을 쭉 진행을 해 보았으며 실습 2번에서 정수 나눗셈과 예외처리에 해당하는 예제에서 정수가 아닌 값을 입력하였을 때 이해할 수 없는 결과가 나왔습니다. IDE에 따라서 Code::block에서는 수행이 그나마 정상적인 것 처럼 보이지만 VS2010에서는 아예 쓰래기값을 보여주는 등 정말로 납득이 가지 않는 결과를 출력하는 것을 보았습니다.

상속을 받아서 예외처리 할 수도 있습니다.

 

========================================    2    =====================================

(20:10 ~ 21:04)

 

예외처리를 하면 좋지만 못할 경우, Run time시에 발생하는 예외의 경우... throw 키워드 다음에 예외타입을 지정하여 예외를 정의할 수 있습니다.

unexpected exceptions는 ??

API로 제공되는

Prototype in <unexpected>

문법을 사용하여 함수를 등록할 수 있습니다.

실습을 진행 해보고 교제의 64~65페이지에 있는 코드를 3_exapmle02에 실습을 해 보았습니다.

 

예외처리를 하는 것에 회의적인 개발자도 있습니다. 고전적인 방법의 예외처리를 하셔도 된다고 하셨습니다.

 

<< 입출력!!  >>

 

IO Stream을 제공함 - C++

그 이유는 기존의 C에서 사용하는 printf같은 함수보다 더 편리하게 사용을 할 수 있도록 하기 위함.

format을 설정하지 않아도 되기 때문에 편합니다. 이유는 각각의 기본 타입에 대해 오버로딩이 되어있기 때문입니다.

 

IOS_base라는 class가 IOS Class의 상위에 있습니다.

 

 

 

========================================    3    =====================================

(21:14 ~ 21:)

 

Input Stream

Output Stream

File I/O

I/O를 모두 상속받아서 입출력을 모두 처리할 수도 있습니다. Java와는 다르게 C++은 여러개의 Class를 상속받을 수 있습니다.

 

다이아몬드 꼴의 상속? scope 문제가 생길 수 있습니다.

 

+ Recent posts