본문 바로가기

스터디/C++

내용정리 1

에러의 종류
+ Compile-time errors
– Syntax errors
– Types errors

+ Link-time errors

+ Run-time errors
– Detected by computer (crash)
– Detected by library (exceptions)
– Detected by user code

+ Logic errors
– Detected by programmer (code runs, but produces incorrect output)

프로그램에서는 항상 프로그래머가 원하는 입력값만이 들어오지 않는다.
입력값 검증은 필수이다.

소스에서 area 라는 함수, (인자값 두개를 곱해 넓이를 구해주는 함수)가 있을 때,
인자값이 음수일경우, 넓이가 음수일 수는 없으므로, 이때 인자값 검증이 필요하다.

생각한 방법들.
1. 그냥 그렇게 하지 않는다. (초간단)
2. 함수 호출시 검증
3. 함수 호출후 함수 내에서 검증
3-1. 만약 인자값 두개 중 하나라도 음수 일경우 -1 리턴. (에러값)
3-2. 만약 인자값 곱한것이 음수일경우 -1 리턴. (에러값)

하지만 이런 에러 검증 방법들은, 모든 수를 범위로 하는 함수들에게는 에러값(-1) 자체도 올바른 리턴값이 될 수 있기 때문에,
효과적이지 않다.

클래스. (객체)
클래스는 일단 구조체에서 발전된 형태이다.
다만, 구조체는 변수밖에 없지만 클래스는 함수까지 가지고 있다.
구조체는 가지고 있는 것밖에 못한다면,
클래스는 가지고 있을 수도 있고 할 수 있는것도 있다. (직접 활동 가능)

try –> 오류가 날 것 같은 구문에서 묶음.
throw –> 오류가 났을 경우, 특정한 클래스를 인자값으로 throw 함.
catch –> throw 가 발생했을 때, 인자값으로 받은 클래스를 통해 오류처리함.

const int* const a
int const* const b
이 둘은 같은 형태다.

공식 :
const는 왼쪽에 있는 형태를 상수화 시킴.
단, 왼쪽에 아무것도 없을 경우 오른쪽에 있는것을 상수화.

프로그램을 잘짜야, 디버깅을 덜한다.
프로그램을 잘짜면, 사용자의 입력만 신경쓰면 된다.

1. 프로그램에 주석은 달지 않는것이 좋다.
–> 주석이 필요없는 코드가 제일 좋은 코드.
2. 단, 어떤 복잡한 알고리즘 등에는 주석을 달아야 한다. (TSP(한붓그리기),Dijkstra (길찾기),B&B)
3. 의미있는 변수이름을 쓸것. Ex) int Login_yes_no;
4. 코드의 들여쓰기를 잘할것.
5. 하나의 함수는, 하나의 기능만 하게 할것.

비주얼 스튜디오에서 중단점을 잘 이용할것.
중단점을 걸고난 후, 오른쪽 클릭을 하면 여러 옵션이 나옴. 잘 이용할 것.

원문: http://blog.kim82536.pe.kr/?p=207