본문 바로가기

Language/C++23

인라인 함수와 매크로 함수 인라인 함수와 매크로 함수 모두 (실행 파일의) 크기에 불리하고 속도에 유리하다는 특징을 가지고 있다. 하지만 인라인 함수는 이에 더해 추가적인 이점을 가진다. 타입을 확인하기에 산술 변환이 잘 처리된다. 지역 변수를 사용할 수 있다. 매크로 함수의 경우 전처리기능을 이용한 '단순 치환'의 역할만을 하기 때문이다. 컴파일 과정에서 인라인 함수와 달리 매크로 함수는 데이터 타입에 관한 문제를 발생할 수 없다. 이러한 점으로 미루어 보아 매크로 함수보다 컴파일러가 처리하는 인라인 함수가 더욱 상위호환의 역할을 할 수 있다고 볼 수 있다. 실제로 C++에서도 매크로 함수보다 인라인 함수 사용을 권장한다. 다만 아무리 inline 키워드를 붙여 인라인 함수로 선언하려 해도 불가능한 경우가 있다. 실제 인라인 함.. 2020. 11. 20.
레퍼런스(Reference)의 특징과 활용법 타입 &변수 = 대상체; 레퍼런스(Reference) = 변수에 대한 별명(Alias)을 정의하여 이름을 하나더 붙인다. 동일한 메모리의 위치를 지목한다는 점에서 공통점이 있지만, 차이점도 많다. 레퍼런스의 특징을 몇가지 적자면 다음과 같다. 1. Alias의 선언에 있어서 레퍼런스와 대상체는 타입이 일치해야 한다. (ex. int - int , double - double) 2. 레퍼런스는 선언할 때 초기화되어 같은 대상체를 계속 가리키며 실행 중에 참조 대상을 변경할 수 없다. (ex. int main() { int i=3,j=9; int &ri =i; //i의 Reference 선언 printf("i = &d, ri = &d, j = &d \n", i, ri, j); ri = j; printf("i.. 2020. 11. 15.
C++의 개선된 문법 C언어를 기반으로 개발된 C++언어는 C의 거의 모든 기능을 포괄하며 새로 추가된 문법 도 많지만 일부 제외된 문법도 있다. 따라서 두 언어 사이에서 C++ 고유의 개선된 문법들만을 간략하게 정리해본다. 1. Tag 명시의 불필요 기존 C언어에서는 enum이나 structure를 선언할 때는 태그를 먼저 선언한 후 태그로부터 변수를 선언한다. enum origin {EAST,WEST,SOUTH,NORTH}; enum origin mark = WEST; struct Human { int age; int name[5]; } struct Human human1 = {25,"김동욱"}; 하지만 사실상 앞에 키워드를 붙이지 않더라도 선언문을 보면 열거형인지 구조체인지 구분이 가능하다. 기존 C언어에서는 이를 분명.. 2020. 11. 10.