일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
- C++
- 윤성우 열혈 c++
- namespace c++
- 2252 c++
- 백준#1976#dfs#bfs#그래프탐색#그래프#알고리즘#코딩#여행가자#백준여행가자
- 코린이공부중....
- 분리집합
- class c++
- 선수과목
- 참조에 의한 호출
- inline c++
- class
- 값에 의한 호출
- topolgy algorithm
- 선택정렬#알고리즘#C++#알고리즘 공부
- 기술 면접
- enum c++
- inline 함수
- enum enumclass
- C++ 이름공간
- disjoint set #분리집합 # 분리집합 c++ #상호배타적집합 #알고리즘공부 #c++
- 코딩공부
- inline사용법
- 4195
- 백준
- this포인터
- 백준 14567
- c struct 란
- 백준 분리집합
- enum class
- Today
- Total
조던을좋아하는코린이
struct c 본문
클래스를 알기 전에 c 언어의 구조체에 대해서 알고 간다면
1. 구조체란
struct를 사용하여 연관 있는 데이터를 묶는 장치를 말한다.
사용 이유는 데이터를 하나로 묶으면 프로그램의 구현 및 관리가 용이하기 때문이다.
*Struct에서 public,private,protected을 class와 같이 선언이 가능!
하지만, Default가 public이라는 점이 다르다.
cf) Class에서는 Default가 private이다.
자동차와 관련된 함수들이 전역 함수로 선언이 되어있다. 이를 구조체 내부에 선언하게 된다면
다음과 같이 사용할 수 있다.
함수를 호출할 때 특정 값을 입력으로 넣어주는것이 아니라 구조체 내에 함수가 선언되어있어 구조체 내에 선언된 변수에 직접접근하여 호출!.
+++ 하나더 !! 이전에 배웠던 enum의 기능이 여기서도 사용될 수 있다. 맨위에 보면 #define으로 자동차와 관련된 상수들을 미리 정의해주었다.
이것들은 다른 자동차와 관련없는 곳?구조체?변수?main 에서는 사실상 필요가 없다.
따라서 enum을 구조체 내부에 선언하여 특정 구조체에서만 사용 될수 있도록 한다.
다음의 코드를 보자
다음 enum의 가독성을 올리기 위해서 namspace를 활용하는 코드도 보겠다.
*** struct 내부에 함수를 선언하게 되면 " 함수를 인라인으로 처리해라"의 의미가 내포된다고 한다.
아래의 코드는 함수명은 구조체 내부에 선언하고 구조체 밖에 한것을 볼수 있다.
이때 inline을 처리하기 위해서는
inline void stCar:::showCarState(){ - - - - - } 로 구현을 진행하면 된다.
다음의 코드를 보겠다. 더 가독성이 높아진 코드라고 볼수 있다.
이와 비슷한것이 c++에서의 CLASS이다.
c언어의 구조체를 보았으니 c++의 클래스에 대해서 알아보겠다!!!!!! 드디어!!!
퀴즈?
만약 enum (열거형)을 아래의 코드와 같이 사용해도 될까?
아래 그림에서 3~5번 라인과 8번 라인을 보기!!!
정답은 예스! 왜냐하면 struct stCar안에 LEN과 밖에서 선언된 enum LEN은 다르기 때문에!
구조체 안의 LEN은 구조체로 선언된 변수에서만 유효하고 일반 LEN은 구조체로 선언된 변수가 아닌 곳에서 사용이 가능하다
하지만 이 그림에서는 당연히
No!! 틀린거다!!
KIA가 두개의 열거형에 나와있기에 틀리다.
이를 해결하기 위해서는 1) KIA의 명을 바꾼다 첫번째 enum에서 KIA
두번째 enum B에서 bKIA이렇게 바꾸기
2) namespace를 활용한다!