오래 못 할 짓 하지 않기
데이터 구조 3 (C++ ) 본문
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
'2학년 1학기 > 데이터 구조 ( Data structure )' 카테고리의 다른 글
데이터 구조 6 (Queue , pointer) (0) | 2023.03.16 |
---|---|
데이터 구조 5 (String , Stack 응용) (0) | 2023.03.14 |
데이터 구조 4 (Constructor , Stack 응용 - @fix들) (0) | 2023.03.09 |
데이터 구조 2 (Algorithm efficiency ,Stack, ADT) (1) | 2023.03.06 |
데이터 구조 1번째 (0) | 2023.02.28 |