본문 바로가기

programing/C++56

exit(), assert(), 에러처리 - void exit(int status); // 프로그램을 종료// 성공시 EXIT_SUCCESS, 실패시 EXIT_FAILURE를 인수로 넣음 - assert(표현식) : 코드가 정확하기 동작할 수 있는 상황이라는 것을 확인> 표현식을 인수로 전달 받아 참, 거짓을 점검> 조건이 참이면 이 함수는 아무 일도 하지 않음> 거짓이면 에러 발생 위치와 표현식 등으로 구성된 상세한 에러 메시지와 함께 강제로 종료> 콘솔 프로젝트는 stderr 표준 출력으로 나타나지만, 그래픽 프로젝트에서는 대화상자로 출력> 프로그램이 죽은 위치보다는 에러의 원인이 될만한 곳에 사용하여 미리 오동작 발견> 조건부 컴파일로 정의되어 있는 매크로 함수 -> 프로젝트의 성능이나 크기와 상관이 없음 - assert문 주의 사항> 디.. 2016. 12. 27.
형변환 연산자 오버로딩 자료형이 연산자인 줄 몰랐는데 연산자라서 연산자 오버로딩이 된다. 물론 기본 자료형 뿐만 아니라 사용자 자료형(클래스)도 된다. class Class{...operator [자료형]() { /*구현*/ }...} ps. string 클래스가 바로 출력되는 방법인 듯 2016. 12. 6.
explicit 암시적 변환을 막아주는 키워드 암시적 형변환(int bool enum short, float double)을 막는 다던가 설명 : 링크 ps.C에서 C++로 넘어 오면서 C의 장점과 단점인 제어권에 대해서 말이 많았다. C의 제어력이 좋고 제안이 없기 때문에 마음껏 표현 할 수 있다는 장점이 있지만 무작위로 사용될 수 있기 때문에 잘 못 사용하게 될 우려도 많았다. 그래서 그 제어력을 마음껏 사용해서 개발해보니, 프로그램에 많은 버그를 만들고 질이 떨어 졌다. 물론 그러한 것들을 잘 사용하면 문제가 없지만 즉, 그것을 잘 사용하기 위해서는 전체적인 평준화, 즉 법칙 같은 것을 준수 해야 하나 모든 프로그래머가 그런 것을 다 제대로 교육 받거나 알면서 사용하지 않는 문제가 있다. 그래서 C++로 넘어 오면.. 2016. 12. 5.
Effective C++ 1. C++에 왔으면 C++의 법을 따릅시다. [항목 1] C++를 언어들의 연합체로 바라보는 안목은 필수* 다중 패러다임 프로그래밍 언어= 절차적 프로그래밍 + 객체 지향 + 함수식 + 일반화 + 메타프로그래밍 + etc...= C + 객체 지향 + 템플릿 + STLcf. C++를 사용한 효과적인 프로그래밍 규칙은 경우에 따라 달라집니다. 그 경우란, 바로 C++의 어떤 부분을 사용하느냐 입니다. [항목 2] #define을 쓰려거든 const, enum, inlinecf. 단순한 상수를 쓸 때는, #define보다 const 객체 혹은 enum을 우선 생각합시다.cf. 함수처럼 쓰이는 매크로를 만들려면, #define 매크로보다 인라인 함수를 우선 생각합시다. [항목 3] 낌새만 보이면 const를 .. 2016. 12. 4.