본문 바로가기
Study/C++

[C++] 입출력, 연산자

by Jamie Lim 2020. 8. 2.

1.  설계 목표

 - 호환성 (C언어의 문법 체계를 그대로 계승)

 - 객체 지향 개념 (캡슐화, 상속, 다형성 / 소프트웨어의 재사용으로 생선성 up)

 - 타입 체크를 업격하게 해 실행 시간 오류의 가능성을 줄이고 디버깅을 도움

 - 실행시간의 효율성 저하를 최소화

 

 1) 객체지향형 언어 특징

   - 캡슐화 : 데이터를 캡슐로 싸서 외부의 접근으로부터 보호

                 클래스로 캡슐 표현

   - 클래스 : 객체를 만드는 틀 / 멤버 변수들과 멤버 함수로 이루어짐

   - 객체 : 클래스라는 틀에서 생겨난 실체

   - 상속 : 객체가 자식 클래스의 멤버와 부모 클래스에 선언된 모양 그대로 멤버들을 갖고 탄생

              재사용성을 높여 소프트웨어 생산성을 높임

   - 다형성 : 하나의 기능이 경우에 다라 서로 다르게 보이거나 다르게 작동하는 현상

                Ex) 연산자 중복, 함수 중복, 함수 재정의(overriding)

   - 목적 : 소프트웨어 생산성 향상

              (소프트웨어 생명주기 단축 / 코드 재사용 / 클래스 상속&재사용

              실세계에 대한 쉬운 모델링

              (물체 혹은 객체의 상호 작용에 대한 묘사 필요 / 객체로 구성된 실세계 등)

 

 2) 제네릭 프로그래밍

   - 제네릭 함수 : 동일한 프로그램 코드에 다양한 데이터 타입 적용할 수 있게 일반화한 함수

   - 제네릭 클래스 : 다양한 데이터 타입을 적용할 수 있게 일반화한 클래스

   - template : 이 키워드로 입출력 라이브러리를 제네릭화

 

2. 입출력 & 연산자

  1) 입출력

   - 주석문 : 프로그램 실행에 영향을 미치지 않게 해 줌 (설명이나 메모를 적기 위해 보통 사용)

                한 줄 주석 : //                      여러 줄 주석 : /* ~ */

 

   - main 함수 : C++ 프로그램의 실행을 시작하는 함수

                    이 함수가 종료되면 프로그램 자체가 종료됨

 

   - #include <iostream> : 표준 입출력을 위한 클래스와 객체, 변수 등이 선언

                                    Ios, istream, ostream, iostream로 클래스 선언

                                    cout, cin, <<, >> 등으로 연산자 선언

 

   - namespace : 여러 이름들이 충돌하는 것을 방지하기 위해 자신만의 이름 공간을 생성

                      iostream헤더 같은 경우에는 std를 사용

                      std같은 namespace를 생략하려면 using namespace std;를 시작할 때 적는다

 

   - cout & << : 출력을 위한 객체와 연산자

                      coutiostream 헤더 파일로 선언되고 std 공간에 선언되어 std:;cout으로 사용

                      << ostream 클래스로 구현하고 오른쪽에 있는 피연산자를 왼쪽 스트림 객체에 삽입

                        * 줄을 넘어갈 때(enter) \n이나 endl 사용

 

   - cin & >> : 입력을 위한 객체와 연산자

                     cin은 키보드와 연결해 C++ 입력 스트림 객체

                     >> 연산자는 입력된 스트림에서 값을 읽어 변수에 저장시켜준다

                     Enter키가 입력되면 입력 버퍼에 있는 키가 변수에 전달됨

 

   - C++ 문자열

      * C-스트링 방식 : 널 문자(\0)로 끝나는 char 배열로 C언어에서 사용하는 문자열 방식

                             <cstring> 혹은 <string.h> 헤더 파일로 선언

                             strcmp(), strlen(), strcpy() 사용 가능

 

      * cin.getline() : 공백이 포함된 문자열을 입력 받을 수 있음

                          Cin.getline(char buf[], int size, char delimitChar)

 

      * string 방식 : <string> 헤더 파일로 선언

                         C++에서 추천하는 입력 명령어 / 문자열 크기에 제약이 없음

 

 2) 연산자

   (1) 산술 연산자

산술 연산자 설명
= 대입 연산자 / a = 5
+ 더하기 / a = 5 + 3
- 빼기 / a = 5 - 3
* 곱하기 / a = 5 * 3
/ 나누기 / a = 5 / 3
% 나머지 값 / a = 5 % 3

 

연산자 설명 연산자 종류
+= a += 3a = a + 3과 동일 대입 연산자
-= a -= 3a = a - 3과 동일 대입 연산자
*= a *= 3a = a * 3과 동일 대입 연산자
/= a /= 3a = a / 3과 동일 대입 연산자
%= a %= 3a = a % 3과 동일 대입 연산자
++ a ++ a = a + 1과 동일 증가 연산자
-- a -- a = a - 1과 동일 감소 연산자

   * ++aa+의 차이

   ++aa+1을 한 후에 어떠한 명령을 수행

   a++ a가 명령을 수행한 뒤에 +1을 함

 

 

   (2) 관계 연산자

관계 연산자 설명
== 두 값이 같으면 참
왼쪽 값이 크면 참
오른쪽 값이 크면 참
>= 왼쪽 값이 크거나 같으면 참
<= 오른쪽 값이 크거나 같으면 참
!= 두 값이 다르면 참

 

   (3) 논리 연산자

논리 연산자 의미 설명
&& AND / 그리고 둘 다 참이어야 함
|| OR / 또는 둘 중 하나라도 참이면 참
! NOT / 부정 참이면 거짓이고 거짓이면 참

 

   (4) 비트 연산자

비트 연산자 의미 설명
& AND / 논리곱 둘 다 1이면 1
| OR / 논리합 둘 중 하나만 1이면 1
^ XOR / 배타적 논리합 둘이 같으면 0, 둘이 다르면 1
~ 비트 부정 10으로 01
<<  비트 이동 (왼쪽) 비트를 왼쪽으로 시프트
>>  비트 이동 (오른쪽) 비트를 오른쪽으로 시프트

 

'Study > C++' 카테고리의 다른 글

[C++] 클래스와 객체 & 객체 포인터  (1) 2020.05.31
[C++] 클래스와 객체  (0) 2020.05.24
[C++] 포인터, 함수  (0) 2020.04.07
[C++] 조건, 반복,배열  (0) 2020.03.31

댓글