본문 바로가기
프로그래밍 언어/C++

C++) 1. C++ 언어

by nomfang 2021. 8. 30.
728x90
반응형

C++

1979년 Bell 연구소의 Bjarne Stroustrup이 언어를 확장하여 만든 프로그래밍 언어
C with Classes 라는 이름으로 만들었다가 83년 부터 C++ 라는 이름 사용

주요 확장 내용

  • 객체지향 프로그래밍: 클래스, 상속, 다형성, 동적 바인딩 등
  • 일반화 프로그래밍: 템플릿
  • 예외처리

C++ 언어의 표준

국제 표준화기구 (ISO)의 표준화 연혁
1989년 C++ 표준화 작업 착수
1998년 C++ 98
2003년 C++ 03
2007년 C++ TR1
2011년 C++ 11
2014년 C++ 14
2017년 C++ 17

C++ 프로그램의 작성

  • C++ 소스 프로그램 파일: 처리하고자 하는 작업을 수행하는 C++ 프로그램 명령어들을 담고있는 파일
    확장자: .cpp, .cxx, .C 등을 사용
  • C++ 헤더파일: 클래스, 함수의 원형, 매크로, 전역변수, 상수 등 여러 소스 파일에 공통적으로 선언되는 내용을 담고 있는 파일
    단독으로 컴파일 되지 않고, #include 라는 선행처리기 지시어에 의해 소스 프로그램 파일에 삽입되어 함께 컴파일 됨
    확장자: .h 로 사용하는 것이 일반적

C++ 프로그램의 빌드

필요 도구

  • 소스 프로그램 및 GUI 등의 편집기
  • 컴파일러
  • 링커
  • 디버깅 도구

위와 같은 것들을 함께 가지고있는 통합개발환경(IDE)를 주로 사용
DEV C++, VISUAL STUDIO, elipse 등

C++ 기본 문법

#include <iostream> // 선행처리기 지시어

int main() 
{

  // 표준 출력 스트림, 문장을 출력
  /* 주석을 이렇게 
      사용할 수도 있다 */
  std::cout << "Hello World!\n"
              << std::end1;
  return 0;
}

선행처리의 지시

  • 선행처리: 프로그램을 컴파일하기 전에 소스 프로그램을 가공하여 컴파일러가 실제로 번역할 소스 프로그램을 만드는 것
  • 선행처리기 지시어로 처리를 지시
    • '#' 으로 시작
    • 한 행에 한 개의 문장을 작성
  • 대표적인 선행처리
    • 헤더파일 삽입: #include
    • 매크로 선언 및 해제: #define, #undef
    • 조건부 컴파일: #if, #ifdef, #ifndef

함수

머리부, 몸체블록 으로 구성됨

머리부: 자료형 함수이름(인수)

입출력 스트림

표준 출력 스트림 객체

std::cout

  • 데이터를 문자열로 변환하여 출력함
  • 출력 연산자(삽입 연산자): <<
std::cout << "출력 스트림";

int a = 10;
std::cout << "a의 값은;
std::cout << a << "입니다." std::endl;  // 이어서 사용 가능, endl은 개행

표준 입력 스트림 객체

std::cin

  • 문자열을 입력 변수의 자료형의 값으로 변환하여 입력함
  • 입력 연산자(추출 연산자): >>
int a; 
char str[100];
std::cin >> a >> str;

명칭공간

특정한 이름들이 인식되는 프로그램의 부분

  • 명칭공간의 정의
    namespace MyNSpc {
      int count; // 명칭공간 내에 명칭을 선언하는 문장 나열
    }
    

MyNSpc::count = 0; // 정의된 명칭 사용

### 명칭공간이란?
동일한 명칭이라도 서로 다른 명칭공간에서 정의되었다면 별개의 것으로 구분

전역 명칭공간: 특정 명칭곤간에 속하지 않는 기본 명칭공간
std 명칭공간: 표준 C++ 라이브러리의 명칭들의 정이되어 있는 명칭공간

namespace myNSp1 { int n = 10; }
namespace myNSp2 { int n = 20; }
int n = 30;

int main(){
int n = 40;

std::cout << myNSp1::n << std::endl; // namespace 1의 n
std::cout << myNSp2::n << std::endl; // namespace 2의 n
std::cout << ::n << std::endl; // 전역변수로 선언된 n
std::cout << n << std::endl;  // 가장 가까운 n 

}


### 자주 사용하는 명칭공간 - using
특정 명칭공간이나 명칭공간 내의 특정 이름을 자주 사용하는 경우 간소화 가능

using namespace std; // 명칭 공간 std 내의 모든 명칭에 대해 std를 생략 가능
using std::cout;  // cout만 std를 생략 가능





반응형

'프로그래밍 언어 > C++' 카테고리의 다른 글

C++) C++ 기초 (1)  (0) 2021.09.11

댓글