오래 못 할 짓 하지 않기

데이터 구조 3 (C++ ) 본문

2학년 1학기/데이터 구조 ( Data structure )

데이터 구조 3 (C++ )

쫑알bot 2023. 3. 6. 20:10
728x90

C++ = C + 객체지향 (OOP = 주로 Class로 구현됨)

 

  • C++ 특징 : Structure 와 Class를 

 

기본 구조 : #include <iostream>

                  using namespace std;    이 두 개는 그냥 박아놓고 시작.

 

main - cout << x;   → x를 출력해라 > 타입은 다른 말 안 하고 출력한다고 하면 선언된 데이터 타입으로 출력함

활용 : cout <<x<<y<<z ;  → x를 출력 > 이어서 y를 출력 > 이어서 z를 출력 ... 상수도 가능

 

  • 입출력

Input : cin  → cin>>x;           여러 개도 할 수 있음

Output : cout → cout <<x;  

 

  • Identifiers : (변수,함수,클래스) 이름을 짓는 것

 

  • 변수 선언

- 변수를 선언한다 는 것은 해당 변수 Type이 들어갈 메모리를 확보한다는 의미.

- 임의의 위치에서 선언 가능 ( C랑 다른 점! ) >>지금까지 잘 됐다. 왜냐? vs에서는 c++컴파일러를 지원하기 때문

 

(뜬금없이 알려주신 거)

(데이터 타입 long long x하면 웬만한 건 커버한다고 하심)

 

상수 페이지는 상식적으로 알고 넘어가기 , + escape

L이 먼저 붙었다? → wchar_t

숫자랑 알파벳이 섞여있다 ? → 16진수

0이 오고 3비트로 숫자가 있다 ? → 8진수

 

  • 변수 초기화

초기화 하는 법 : 

- 선언과 같이 상수로 초기값 설정

- Function call 될 때 parameter로 가서 설정될 때

 

  • Operators (연산자)

-  + + , - - 이런 건 한 변수에서 한 번만 한다.

- 우선 순위 : ! → && → ||   

                   : Unary(한 가지 숫자로만 하는 연산) > Binary (두 개의 숫자로 하는 연산)

- 연산 순위를 바꾸고 싶을 땐 (괄호)를 사용할 것.

- Arithmetic ( x++등 덧셈뺄셈들)  → Relational(x>3 등 부등호들) → logical (x==True&&... 등 and or not)  

 

## Short Cirucit evaluation

Evaluation 과정에서 결과값이 확정되면 나머지 뒤에 값들을 그냥 버리고 감

  뒤에 안 봐도 앞에 거 때문에 다 통과 될 것들이면 넘긴다 라고 생각.

 

 


Type conversion

: 서로 다른 type의 data 연산

 

case 1   용량 (유효숫자) 이 더 많은 쪽으로 변환 시킴

ex) 3(int) + 2.7(float) = 3.0(float) + 2.7(float)

 

case 2   서로 다른 type의 assignment 또는 parameter일 땐

   받는 쪽 type으로 변환

ex) int a = x(int) + y(float)    x(int) + y(int) 

 

case 3   boolean type 은 int로 변환 가능  0 or 1

 

제어 구조

- 순차적 구조 > 주로 아무 control 이 없으면 쓰인 순서대로 수행됨

- 선택적 구조 > if , switch 문으로 원하는 곳으로 보내도록 제어

- 반복 (loop)  > 

- break , continue 사용

 

[ 실습 과제같은 거 다 풀어보기 ] 

 

  • Structures ( C++에선 Class만 쓴다고 함 )

: 여러 " 일관된 " 정보들을 하나의 묶음으로 만들어 주는 것    주로 변수 선언만 함?

 

## 중요 ##

- Member 지정

x.a   x라는 structure 에 있는 a라는 멤버

x->a   x라는 포인터가 가리키는 곳의 a

 

  • Class 

: Structure + functions

(member data) + (member functions)

 

- access specificator 

1. public  - 해당 class 외에도 access 가능

2. private - 해당 class 에서만 사용 가능  <<< C++은 이게 디폴트 

3. protected - 상속 가능한 private 특성. / 다른 class여도 상속하면 access 가능

 

 

  • OOP

원칙 3가지

- Infomation Hiding

>  어떻게 작동하는지는 감춰놓음 

 

- Data Abstraction 

> 작동이 어떻게 되는지 몰라도 사용법만 알면 사용 가능 ( ex 7살 나 > 컴퓨터 돌아가는 방법 모르고 게임 했었음 )

 

- Encapsulation

> private , protected 이런 걸로 정보 보호 가능

 

 

Class           vs  Object

붕어빵 틀           만들어진 붕어빵

 

 

class def 예제

 

void Student :: set_id( 함수 구현한 코드는 안 보임) → 몰라도 쓸 수 있다는 뜻

 

##  ::  → ~~란 이름의 class 에 속한

ex) Student :: set_id  →Student 라는 이름의 class에 속한 set_id라는 뜻

 

 

[ 예제들 풀어보기 > 과제임 ] 

 

 

 

 

출처 : 한동대학교 김호준 교수님 - 데이터 구조 PPT