목록C/C++ (15)
따..딱히 공부하려고 포스팅하는 건 아니니까..!
컴파일 프로그래밍 코드를 다른 프로그래밍 코드로 번역하는 과정, 이 때 만들어지는 것이 오브젝트 파일이다. 즉, 오브젝트 파일을 만드는 과정이다. 링크 만들어진 오브젝트 파일을 이어주어 결과적으로 실행파일을 만드는 과정이다. 예를 들어, A 파일이 있다고 하자.A 파일에는 헤더파일과 그 헤더파일에 정의되어 있는 함수와 변수들이 있다.이때 A 파일은 각각 문법적 오류가 없기 때문에 컴파일했을 때에는 정상적으로 작동한다.그러나 A 파일 자체만으로는 실행 불가능하다.왜냐하면 A 파일만 보았을 때는 결과적으로 무엇을 실행해야하는지 정의되어있지 않기 때문이다.즉, A 파일에 선언된 헤더파일의 정보가 필요한데, 이 어딘가에 있을 헤더파일을 A 파일과 이어주는 과정을 '링크'라고 한다. 이렇게 컴파일과 링크를 나누어..
#define 알다시피 #이 붙은 것은 전처리기이다.전처리기라는 것은 컴파일을 하기 전에 소스코드가 미리 처리를 해버리는 것을 말한다. 즉, #define을 사용하면 컴파일러가 쓰는 기호 테이블에 표시가 되지 않아 파일 오류가 나도 어디서 오류가 났는지 알기가 쉽지 않다. 예를 들어, #define NUM 100 라는 코드를 짰다고 하자. 이 코드만을 봤을 때에는 NUM이 기호식 이름으로 보일지도 모른다. 하지만 컴파일러 입장에서는 NUM은 그냥 100이라는 상수이다. 그래서 에러 메세지가 나면 NUM이 표시되는 것이 아니라 100이라는 상수만 표시가 된다. 그러므로 어디서 오류가 났는지 어렵다는 것이다. 그렇기 때문에 #define을 멀리하고 const, enum, inline을 사용해야 하는 것이다...
포인터와 레퍼런스 포인터 레퍼런스 표현 * & 의미 메모리 주소를 가리킨다 값에 직접 접근하는 주소 변수 접근시 나타나는 값 가리키는 주소가 가진 변수의 값 변수의 내용이 저장된 메모리 주소값 상수 참조 X X NULL 초기화 가능여부 O X 초기화 객체(변수)의 주소값을 입력받음 객체(변수)를 직접 입력받음 초기화 여부 꼭 하지 않아도 됨 반드시 해야함(나중에 값을 바꿀 수 없기 때문에) 초기화 이후 다른 변수 참조 가능 다른 변수 참조 불가능 특징 메모리 공간을 할당함,포인터가 가리키는 주소의 크기는 자료형이 무엇이든 간에 항상 같다. 메모리 공간이 할당되는 것이 아님, 이미 선언된 변수를 다른 이름으로 부르는 것 포인터와 레퍼런스가 생긴 계기입력값을 받는 함수의 변수가 값을 복사한다 -> 항상 복사..
1. 변수 저장 영역 외부 소스 접근 여부 함수 내 선언 특징 전역변수 데이터 O X 정의를 한 번만 할수 있다 정적변수 데이터 X X 자료형 앞에 static을 붙인다 지역변수 스택 X O 함수가 살아있는 동안에만 변수가 존재 정적 전역변수 데이터 X X 전역변수이지만 외부 소스에서 접근 불가 정적 지역변수 데이터 X O 함수를 빠져나와도 변수에 저장된 값이 사라지지 않는다 const : 자기 자신의 왼쪽에 있는 것을 상수화 (단, 가장 왼쪽에 있을 때에는 오른쪽을 고정한다)ex) 'const int *const ptr' 이면, 'int, *' 을 상수화(고정)한다. extern : 함수에 붙여주면 외부에 공개가 된다. 즉, 외부 소스에서 접근 허용이 가능하다. (extern 는 어딘가에 존재하는 전역..
1. 객체 지향 프로그래밍(Object-Oriented Programming: OOP) 소프트웨어를 객체 단위로 작성하는 방법 1) 객체지향의 기본요소 1. 클래스(Class) 같은 종류의 집단에 속하는 속성과 행위를 정의한 것이며 객체지향 프로그램의 기본적인 사용자 정의 데이터형이라고 할 수 있다. - 멤버 변수(필드, field) : 객체 안에 포함된 변수를 다른 일반적인 변수와 구별하기 위해 이름지은 것(클래스에서 자세한 설명)- 멤버 함수(메소드, method) : 객체 안의 함수를 일반적인 함수와 구별하기 위해 이름지은 것 ∴ 객체 ≒ 클래스, 객체 > 클래스 (클래스 = 설계도, 객체 = 제품) 2. 객체 객체 지향 기술의 핵심 개념, 현실세계의 객체들을 흉내내어 소프트웨어 상에서 구현한 것이..