이번 편의 목표: C++에서 참조로 변수에 별명을 붙이고, 문자열과 출력을 표준 라이브러리로 바꿉니다.

C++은 C의 메모리 모델 위에 타입과 라이브러리를 더합니다. 15편부터의 파일 확장자는 .cpp이고 컴파일러는 g++입니다. 표준 라이브러리 이름은 std 안에 있습니다. 이 연재는 std::를 생략하지 않습니다.

hello.cpp로 저장합니다.

C++
#include <iostream>
#include <string>

int main() {
    int days = 3;
    int &alias = days;
    std::string title = "개미";

    alias = 4;
    std::cout << days << '\n';
    std::cout << title << '\n';
    return 0;
}

g++ -std=c++17 -Wall -Wextra -o hello hello.cpp

./hello

참조 alias는 days의 다른 이름입니다. alias = 4는 days를 4로 바꿉니다. 참조는 만들어진 뒤 다른 변수를 가리키게 바꿀 수 없고, 널이 될 수도 없습니다. 없을 수 있는 주소가 필요하면 09편의 포인터를 그대로 씁니다.

std::string은 문자 배열의 길이와 메모리 반환을 타입이 맡습니다. std::cout은 출력 스트림입니다. << 는 오른쪽 값을 그 스트림으로 보냅니다. 문자열 끝의 줄 바꿈은 '\n' 문자로 보냅니다.

정수를 읽을 때는 std::cin >> days를 사용합니다. 추출이 실패하면 스트림이 실패 상태가 되므로, 계산 전에 std::cin의 상태를 확인합니다.

직접 해 보기

참조로 days를 한 번 더 늘려 5를 출력하고, 제목을 공책으로 바꿔 둘째 줄에 출력하세요.

해설

alias = 4 다음에 alias = alias + 1을 수행하면 days는 5입니다. title에 새 문자열을 대입하면 cout이 공책을 출력합니다. C처럼 배열 크기를 직접 넘기지 않습니다.