리얼 개발

[Effective C++] 공부 정리 1 본문

C++/효과적인 C++

[Effective C++] 공부 정리 1

econo-my 2024. 7. 13. 17:55

C++ 개발자들은 반드시 읽어야 할 정도로 좋은 도서인 Effective C++ 을 읽고 정리하는 글 입니다.

 

용어 정의

선언

  • 코드에 사용되는 ‘어떤 대상’의 이름과 타입을 컴파일러에게 알려 주는 것이다. 하지만 구체적인 세부사항은 선언에 들어 있지 않다. 예를 들어, 다음과 같은 것들이 선언이다.
extern int x; //객체 선언

std::size_t numDigits(int number); //함수 선언

class Widget; //클래스 선언

template<typename T> //템플릿 선언
class GraphNode;
  • 함수의 시그니처
    • numDigits의 경우 std::size_t(int)
    • int 하나를 취하고 std::size_t를 반환하는 함수라는 의미

 

 

정의

  • 선언에서 빠진 구체적인 세부사항을 컴파일러에게 제공하는 것이다. 객체의 경우에 있어서 정의는 컴파일러가 그 객체에 대한 메모리를 마련해 놓은 부분이 된다. 함수나 함수 템플릿에 대한 정의는 그들에 대한 코드 본문(body)을 제공하는 것이고, 클래스 혹은 클래스 템플릿의 경우에는 그 클래스 혹은 템플릿의 멤버를 넣어 준 결과가 정의이다.
int x; //객체 정의

std::size_t numDigits(int number) //함수 정의
{
	std::size_t digitsSoFar = 1;
	
	while((number /= 10) != 0) ++digitsSoFar;
	return digitsSoFar;
}

class Widget //클래스 정의
{
public:
	Widget();
	~Widget();
};

template<typename T> //템플릿 정의
class GraphNode
{
public:
	GraphNode();
	~GraphNode();
}

 

 

초기화

  • 어떤 객체에 최초의 값을 부여하는 과정이다. 사용자 정의 타입으로 생성한 객체의 경우, 초기화는 생성자에 의해 이루어진다.
  • 기본 생성자(default constructor)
    • 어떤 인자도 주어지지 않은 채로 호출될 수 있는 생성자.
    • explicit → 암시적 형변환을 막아준다.
  • 복사 생성자(copy constructor)
    • 어떤 객체가 새로 정의될 때 불린다.
  • 복사 대입 연산자(copy assignment operator)

 

 

TR1 / Boost

  • TR1
    • C++ 표준 라이브러리에 새로 추가되는 기능들에 대한 명세이다.
    • 새로 추가된 기능들은 클래스 및 함수 템플릿이 주류인데, 해시 테이블, 참조 카운팅 방식 스마트 포인터, 정규 표현식 등이다.
    • TR1의 모든 구성요소는 tr1 네임스페이스에 들어 있고, tr1 네임스페이스는 std 네임스페이스 안에 중첩되어 있다.
  • Boost
    • 오픈소스 C++ 라이브러리를 제공하는 단체이다.

 

'C++ > 효과적인 C++' 카테고리의 다른 글

[Effective C++] 공부 정리 5  (0) 2024.10.25
[Effective C++] 공부 정리 4  (0) 2024.08.20
[Effective C++] 공부 정리 3  (0) 2024.07.13
[Effective C++] 공부 정리 2  (0) 2024.07.13