본문 바로가기
전문가를 위한 C++

2025/02/18

by 딴짓거리 2025. 2. 18.

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