C++는 C에 객체지향 개념을 추가하려는 목적으로 설계되었다.
주석은 프로그래머에게 전달하는 메시지며 컴파일러는 이 부분을 무시한다.
모듈은 C++20부터 새롭게 추가된 기능이며, 헤더 파일 메커니즘을 완전히 대체한다. import로 불러온다.(include의 대체)
소스코드를 프로그램으로 만드는 빌드는 세 단계를 거친다.
1. 전처리 - 소스 코드에 담긴 메타 정보를 처리한다.
2. 컴파일 - 소스 코드를 머신이 읽을 수 있는 객체 파일로 변환한다.
3. 링크 - 앞에서 변환한 여러 객체 파일을 애플리케이션으로 엮는다.
C++에서 C 라이브러리를 사용하고 싶을때
1. .h 확장자 대신 c 접두어가 붙는다 <- 권장
2. .h 확장자로 표기하고 네임스페이스를 사용하지 않는다.
전처리 지시자
#ifndef [key]
#endif
ifndef는 key가 정의되어있지 않으면 코드 블럭내의 코드를 실행한다.
보통 중복정의를 방지하기 위해
#ifndef key <- 현재 시점에서 key가 define 되지 않았으므로 코드블럭 실행
#define key <- define 되었으므로 또 이 헤더가 include 되면 ifndef가 막음
//code
#endif
이런식으로 사용한다.
#pragma once 지시자가 이와 같은 역할을 한다.
int main(int argc, char* argv[]) {}
main() 함수는 int 타입의 값을 리턴하고 이 값으로 프로그램의 실행 상태를 표시한다.
return을 명시하지 않으면 자동으로 0을 리턴한다.
argc <- 전달할 인수의 갯수
argv <- 인수의 값
I/O 스트림 (입출력 스트림) <- 컨베이어 벨트
std::endl <- 스트림에 줄바꿈 문자('\n')를 추가한 뒤 현재 버퍼에 있는 내용을 출력 장치로 내보낸다.
성능을 꽤 잡아먹기 때문에 루프안에서는 endl를 남용하지 말고 \n을 쓸것
Type - Safe
언어의 타입 안정성이 프로그램의 well-defined를 보장하는것
제대로 타입된 프로그램은 절대 잘못될 수 없다
문법적으로 옳게 프로그램되었을때 에러가 발생하는 코드를 작성하는게 가능하다면 Type - safe 하지 않음
char buf[4];
buf[4] = 'a';
예를들어 위 코드는 문법적으로 올바르지만 에러가나므로 C++는 Type safe하지 못하다.
네임스페이스
코드에서 이름이 서로 충돌하는 문제를 해결
네임스페이스 앨리어스
이름이 긴 네임스페이스나, 중첩 네임스페이스를 편하게 호출할 수 있게 이름 붙이는것
리터럴 - 코드에 표시한 숫자나 스트링같은 값을 의미.
예)
십진수
부동소수점
단일 문자
문자배열(0으로 끝나는)
균일초기화 문법
int var { 7 }; //이런식으로 초기화 하는것
C++는 강타입 언어. 반드시 타입을 구체적으로 지정해야 함
char
unsigned char
signed char
모두 다른 타입이다.
char은 문자만 표현해야 한다.
나머지는 진짜 1바이트를 다룰때 쓰는 타입이다.
문자를 다루는지 1바이트를 다루는지 헷갈리므로 c++17부터는 std::byte 자료형을 지원한다.
~p.71
'전문가를 위한 C++' 카테고리의 다른 글
2025/02/24 ch02. 스트링과 스트링 뷰 다루기 (0) | 2025.02.24 |
---|---|
2025/02/22 ch02. 스트링과 스트링 뷰 다루기 (1) | 2025.02.22 |
2025/02/21 (0) | 2025.02.21 |
2025/02/20 (0) | 2025.02.20 |
2025/02/19 (0) | 2025.02.19 |