이것만은 잊지 말자!
- C++를 사용한 효과적인 프로그래밍 규칙은 C++의 어떤 부분을 사용하느냐에 따라 달라짐
용어
선언
코드에 사용되는 어떤 대상의 이름과 타입을 컴파일러에게 알려주는 것
구체적인 세부사항은 들어 있지 않음
extern int x;
class Widget;
정의
선언에서 빠진 구체적인 세부사항을 컴파일러에게 제공
객체의 정의는 컴파일러가 객체의 메모리를 마련하는 것
함수나 함수 템플릿에 대한 정의는 코드 본문을 제공하는 것
클래스나 클래스 템플릿에 대한 정의는 클래스 혹은 템플릿의 멤버를 넣어 준 결과
int x; // 객체 정의
std::size_t numDigits(int number) // 함수 정의
{
return 1;
}
class Widget
{
// 클래스 정의
public:
Widget();
};
초기화
객체에 최초의 값을 부여하는 과정
기본 생성자
매개변수가 없거나 모든 매개변수가 기본 값을 가지고 있는 생성자
explicit
암시적 타입 변환에 생성자가 사용되지 않게 막는 키워드
암시적 타입 변환을 사용할 여지가 없다면 우선적으로 explicit로 선언
복사 생성자
객체의 초기화를 위해 같은 타입의 객체로부터 초기화할 때 호출되는 함수
복사 대입 연산자
같은 타입의 다른 객체에 어떤 객체의 값을 복사하는 용도
class Widget
{
public:
Widget& operator= (const Widget& rhs); // 복사 대입 연산자
}
Widget w1;
Widget w3 = w2; // 객체가 새로 정의되는 것으로 복사 생성자가 호출됨
w1 = w2; // 복사 대입 연산자 호출
선행 처리자
#define
size_t
unsigned int를 typedef로 선언한 것
운영체제 메모리 크기에 따라 달라짐, 32비트 운영체제면 32bit, 64비트 운영체제면 64bit
메모리나 문자열 등의 길이를 구할 때 사용
시그니처
함수의 타입을 의미
함수의 매개변수 리스트와 반환 타입이 포함됨
c++은 다중 패러다임 프로그래밍 언어
절차적 프로그래밍을 기본으로 객체 지향, 함수식, 일반화, 메타 프로그래밍 개념까지 지원
일반화 : 템플릿을 이용한 프로그래밍(Common하게 사용할 수 있는 프로그래밍을 의미하는 듯)
'C++ > Effective C++' 카테고리의 다른 글
Effective C++ 항목 9 객체 생성 및 소멸 과정 중에는 절대로 가상 함수를 호출하지 말자 (0) | 2024.07.01 |
---|---|
Effective C++ 항목 8 예외가 소멸자를 떠나지 못하도록 붙들어 놓자 (0) | 2024.07.01 |
Effective C++ 항목 7 다형성을 가진 기본 클래스에서는 소멸자를 반드시 가상 소멸자로 선언하자 (0) | 2024.07.01 |
Effective C++ 항목 4 객체를 사용하기 전에 반드시 그 객체를 초기화 하자 (0) | 2024.06.26 |
Effective C++ 항목 2 #define을 쓰려거든 const, enum, inline을 떠올리자 (0) | 2024.06.21 |