목록C++ (3)
초보 코린이의 성장 일지
- 모든 변수, 함수, 클래스, enum, 템플릿 등등 의 정의는 유일해야 한다. - inline가 아닌 모든 함수의 변수들의 정의는 전체 프로그램에서 유일해야 한다. 정의 (Definition) 와 선언 (Declaration) 선언 - 새로운 선언을 하거나, 기존에 선언된 이름을 재선언 하는 것 정의 - 선언을 포함하는 개념으로, 선언된 개체를 완전히 정의함을 뜻함 선언 정의 번외 extern 지정자가 들어간 선언의 경우 명시적으로 초기화 되지 않는다면 선언 a는 선언이지만 정의가 아니다. b는 1로 초기화 되었으므로 정의 된 것이다. ODR규칙에 위배되지도 않으며, f()는 올바른 코드 f의 선언이지 정의가 아니기 때문에 여러번의 선언해도 문제가 없다.. 컴파일 오류가 발생한다. inline로 정의..
인라인 함수 - 프로그램의 실행 속도를 높이기 위해 C++에 새로 보강된 함수 함수 호출 프로그램 내부 구조 작성한 코드 프로그램을 실행 -> 명령들을 컴퓨터 메모리에 로드 -> 로드된 명령들은 각각 하나의 특정 메모리 구조를 갖는다 -> 명령어들을 순차적으로 실행 -> 루프나 분기문을 만나면 특정 주소로 명령을 건너뛴다 -> 함수 호출 명령을 수행 -> 함수 호출 명령에 도달 하고 그 다음에 있는 명령의 주소를 메모리(스택)에 저장 -> 스택에 매개변수를 복사한 후, 그 함수가 시작되는 메모리 위치로 이동 -> 함수 실행 함수 리턴 과정 함수가 종료 -> 함수의 리턴 값을 임시 저장소에 저장 -> 스택에서 호출시점으로 가서 주소 값을 꺼내옴 -> 호출된 시점으로 복귀 인라인 함수의 필요성 장점 - 위에..
C++와 ANSI C의 함수 원형 비교 - ANSI C는 C++로부터 함수 원형의 개념을 차용했다. - 차이점 : ANSI C는 클래식 C언어와 호환성을 유지하기 위해 함수 원형의 사용이 선택적 C++은 함수 원형을 필수적으로 사용한다. - C++에서는 void num(); 괄호 안을 비워 놓아도 그 안에 void라는 키워드가 들어 있다고 간주한다. 이 의미는 함수가 어떠한 매개변수도 요구하지 않는다는 것을 의미한다. - ANSL C에서는 괄호 안을 비워 놓는 것은 매개변수가 무엇인지 밝히는 것을 거부한다는 뜻이다. 이 의미는 매개변수 리스트가 무엇인지 확인하지 않겠다는 의미이다. ANSI C : ISO C,표준 C(Standard C)는미국 국립 표준 협회(ANSI)와국제 표준화 기구(ISO)가 출판한..