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 & << : 출력을 위한 객체와 연산자
cout은 iostream 헤더 파일로 선언되고 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 += 3은 a = a + 3과 동일 | 대입 연산자 |
-= | a -= 3은 a = a - 3과 동일 | 대입 연산자 |
*= | a *= 3은 a = a * 3과 동일 | 대입 연산자 |
/= | a /= 3은 a = a / 3과 동일 | 대입 연산자 |
%= | a %= 3은 a = a % 3과 동일 | 대입 연산자 |
++ | a ++은 a = a + 1과 동일 | 증가 연산자 |
-- | a --은 a = a - 1과 동일 | 감소 연산자 |
* ++a와 a+의 차이
++a는 a에 +1을 한 후에 어떠한 명령을 수행
a++은 a가 명령을 수행한 뒤에 +1을 함
(2) 관계 연산자
관계 연산자 | 설명 |
== | 두 값이 같으면 참 |
> | 왼쪽 값이 크면 참 |
< | 오른쪽 값이 크면 참 |
>= | 왼쪽 값이 크거나 같으면 참 |
<= | 오른쪽 값이 크거나 같으면 참 |
!= | 두 값이 다르면 참 |
(3) 논리 연산자
논리 연산자 | 의미 | 설명 |
&& | AND / 그리고 | 둘 다 참이어야 함 |
|| | OR / 또는 | 둘 중 하나라도 참이면 참 |
! | NOT / 부정 | 참이면 거짓이고 거짓이면 참 |
(4) 비트 연산자
비트 연산자 | 의미 | 설명 |
& | AND / 논리곱 | 둘 다 1이면 1 |
| | OR / 논리합 | 둘 중 하나만 1이면 1 |
^ | XOR / 배타적 논리합 | 둘이 같으면 0, 둘이 다르면 1 |
~ | 비트 부정 | 1은 0으로 0은 1로 |
<< | 비트 이동 (왼쪽) | 비트를 왼쪽으로 시프트 |
>> | 비트 이동 (오른쪽) | 비트를 오른쪽으로 시프트 |
'Study > C++' 카테고리의 다른 글
[C++] 클래스와 객체 & 객체 포인터 (1) | 2020.05.31 |
---|---|
[C++] 클래스와 객체 (0) | 2020.05.24 |
[C++] 포인터, 함수 (0) | 2020.04.07 |
[C++] 조건, 반복,배열 (0) | 2020.03.31 |
댓글