본문 바로가기
코딩/C++

c++프로그래밍 1장 인라인 함수, 이름공간

by rosemarie 2022. 9. 15.
반응형

인라인함수: 프로그램 코드라인 안으로 들어가버린 함수

<매크로 함수의 장점>

: 일반적인 함수에 비해서 실행속도의 이점

매크로 함수의 단점: 복잡한 함수를 매크로의 형태로 정의하는데 한계가 있다.

함수의 인라인화: 함수의 몸체부분이 함수 호출 문장을 완전히 대체

<c++ 기반의 인라인 함수 정의>

#include <iostream>
inline int SQUARE(int x) //키워드 inline을 통한 인라인 함수
{
	return x * x;
}
int main(void)
{
	std::cout << SQUARE(5) << std::endl;
	std::cout << SQUARE(12) << std::endl;
	return 0;
}

- 매크로를 이용한 함수의 인라인화: 전처리기에 의해서 처리됨

- 키워드 inline을 이용한 함수의 인라인화: 컴파일러에 의해 처리 됨, 함수의 인라인화가 오히려 성능에 해가 될 경우,  이 키워드를 무시. 필요한 경우 일부 함수를 임의로 인라인 처리

 

<매크로함수에는 있지만 인라인 함수에는 없는 장점>

 

인라인 함수와 달리 매크로 함수는 데이터 손실이 없다.

템플릿을 이용하면 자료형에 의존적이지 않은 함수를 만들 수 있다.

 

<이름공간의 기본 원리>

이름 공간을 사용하면 이름충돌

#include <iostream>
namespace BestComImpl {
	void SimpleFunc(void) {
		std::cout << "BestCome이 정의한 함수" << std::endl;
	}
}
namespace ProgComImpl {
	void SimpleFunc(void)
	{
		std::cout << "Progcom이 정의한 함수" << std::endl;
	}
}
int main(void)
{
	BestComImpl::SimpleFunc(); //SimpleFunc함수 호출
	ProgComImpl::SimpleFunc();
	return 0;
}

연산자 :: ->범위지정연산자

이름공간을 지정할 때 사용하는 연산자

'코딩 > C++' 카테고리의 다른 글

  (0) 2022.11.24
접근 지정자  (0) 2022.11.15
클래스 다이어그램  (0) 2022.11.15
가상 함수  (0) 2022.10.18
c++프로그래밍 1장 입출력 방식, 함수의 오버로딩, 매개변수의 디폴트 값  (0) 2022.09.12