SlideShare a Scribd company logo
3. C++ 프로그래밍
박민근
[C++ lab] 3. c++ 프로그래밍
[C++ lab] 3. c++ 프로그래밍
[C++ lab] 3. c++ 프로그래밍
객체

캐릭터
머리모양, 키, 피부색
공격력, 방어력

속성
행동

레벨
아이템

달리기, 서있기, 앉
기
공격하기, 방어하기
맞기, 죽기
객체

객체

속성

멤버 변수

행동

멤버 함수
(메소드)
클래스

객체 (인스턴스)

건담 설계도
(생성된) 건담
크기와 색상이 달라도 다 같은거…
결국은 다 같은 계열…
클래스의 상속 구조

부모 클래스

자식 클래스
상속 관계
(is a 관계)
구체화

로보트

일반화
상속 관계
• 부모의 특성 (속성, 행동)을 그대로 상속 받아, 같은 특성을 가질 수 있다.
• 부모 클래스를 좀 더 구체화 시켜서 설계 한다는 개념

• 각 클래스끼리의 공통된 특성을 부모 클래스에 넣어서 각각의 파생 클래스
에서 재사용이 가능하다
• 부모 = 기본 클래스, 자식 = 파생 클래스
• 부모 <->자식 == 일반화 <-> 구체화

• 자식 클래스는 부모 클래스의 흉내를 낼 수 있다. (다형성)
떄린건가? 맞은건가?
객체는 내가 중심이다
다른 객체에
대해서는
신경쓰지
않아도
된다.
클래스 구조
객체의 생성
생성자와 소멸자
• 생성자 객체가 처음 생성 될 때, 자동으로 호출 되는 함수
• 변수의 초기화 작업을 넣는다.
• 최초 실행되어야 할 행동들을 넣는다
• 필요한 내부 객체들을 생성한다.

• 소멸자 객체가 파괴될 때, 자동으로 호출 되는 함수
• 할당된 메모리의 해제 작업

• 할당된 내부 객체들의 파괴 작업
• 기타 마지막에 실행되어야 할 행동들을 넣는다.
생성자와 소멸자 – 상속 관계
• 자식 클래스가 생성될때 부모의 생성자 함수는 자동 호출 된다.
• 자식 클래스가 소멸될때 부모의 소멸자 함수도 자동 호출 된다.
[C++ lab] 3. c++ 프로그래밍
Ship 클래스 – 멤버 변수, 멤버 함수
접근 제한

• 은닉성
•

•

노출하지 않아도 되는
정보는 보여주거나 제공할
필요가 없다.
외부에서 함부로 변경 못함
접근 권한 설정하기(2)
멤버의 접근 권한 설정하기
[21-23]

접근 권한 키워드에 대한 요약 (뒤에서 더욱 자세히 분류)
public : 외부에서의 접근을 허용한다.
protected, private : 외부에서 접근할 수 없다.
클래스 내부, 외부, 자식 클래스 관계
Public – 모두에게 공개 한다
• 아무나 사용할 수 있다.
• 함수 – 객체를 사용하는 누구든 호출 가능
• 변수 – 객체를 사용하는 누구든 값의 변경 및 사용 가능
Protected – 우리 집안것! 내 자식들만 사용 가능
• 자신과 자식 클래스만 사용이 가능하다.
• 함수 – 나와 내 자식 클래스 내부에서만 호출 가능

• 변수 – 나와 내 자식 자식 클래스 내부에서면 변경 및 사용 가능
Private – 이건 나만의 것! 내 자식도 못씀! 내거야!!
• 자신만 사용이 가능하다
• 함수, 변수 전부 클래스 자기 자신만 사용 가능
접근 권한 설정하기(1)
멤버의 접근 권한을 설정하는 예
class AccessControl
{
public:
char publicData;
void publicFunc() {};
protected:
int protectedData;
void protectedFunc() {};
private:
float privateData;
void privateFunc() {};
};
int main()
{
// 객체를 생성하고, 각 멤버에 접근해보자
AccessControl ac;
ac.publicData = 'A';
ac.publicFunc();
ac.protectedData = 100;
ac.protectedFunc();
ac.privateData = 4.5f;
ac.privateFunc();

//
//
//
//
//
//

성공
성공
실패
실패
실패
실패
enum 열거형
enum 열거형
•
•
•
•
•

타입 종류같은 열거 해야 하는 값들을 저장하는 데이터 타입
내부적으로는 int 형과 같은 4바이트 변수다.
변수안에 들어갈 값들을 제한하여 정한다고 생각하면 된다.
정의된 값들은 디폴트로 0부터 순차적으로 증가한다.
0이 아닌 다른 특정한 값(int형)으로 정의할 수도 있다.
예) 히트 결과
• 함수 반환 값으로 구별이 필요
• Int형으로 반환 => 0 – 미스, 1 – 히트, 2 – 파괴

• enum 형으로 선언
• MISS, HIT, DESTROY
• 반환값으로 enum 형을 반환
[C++ lab] 3. c++ 프로그래밍
구조체

• 여러가지 다른 타입의 데이터의 묶음
• 관련된 다양한 데이터를 하나의 묶음 데이터로 처리할 수 있다.
• 예) 배의 위치 : x좌표, y좌표
[C++ lab] 3. c++ 프로그래밍
C 문자열 (char[])

문자(char)의 배열
szTest의 값 = 배열 시작 위치(포인터)

I

L

o

v

e

Y

o

u

~

P

r

o

f 0

길이가 17개인 고정 문자 배열
Char[17]
std::string
• 가변 문자열 템플릿 클래스
• 문자열의 길이에 상관 없이 문자열을 담을 수 있다 .
• 내부적으로는 문자의 가변 배열로 구성 되어 있다.
• C 형태의 문자열(문자배열 char[])로 변환이 필요한

경우에는 c_str() 멤버 함수를 사용 한다.
sprintf_s()
• sprintf_s(결과를 담을 문자 배열, 포맷, argument,..)
• printf에서 출력 결과를, 입력 받은 배열에 담는다고
생각하면 된다.
• 문자열의 변경이나 복사, 추가등에 활용할 수 있다.
• 임의의 문자열 조합등을 문자열 배열에 담는다고

할 수 있다.
문자열 변경

문자열 복사
문자열 추가

More Related Content

PDF
Java inner class
PDF
Java extends
PDF
Swift세미나(속성(properties), 메소드(method))
PDF
Scala self type inheritance
PPTX
Java, android 스터티2
PDF
Start IoT with JavaScript - 7.프로토타입
PPTX
Hibernate5.x
PDF
Scala block expression
Java inner class
Java extends
Swift세미나(속성(properties), 메소드(method))
Scala self type inheritance
Java, android 스터티2
Start IoT with JavaScript - 7.프로토타입
Hibernate5.x
Scala block expression

Similar to [C++ lab] 3. c++ 프로그래밍 (20)

PDF
9 object class
PPTX
게임프로그래밍입문 7
PDF
08장 객체와 클래스 (기본)
PPTX
이펙티브 C++ 5,6 장 스터디
PDF
5 6 1
PDF
Hello, C# : OOP
PDF
Effective c++ chapter5 6_ 131039 신동찬
PPTX
Effective c++(chapter 5,6)
PPTX
Effective c++ 3
PPT
강의자료3
PDF
객체지향 단어가 의미하는 것
PDF
The c++ programming language 10장 클래스 발표
PPTX
Effective c++chapter4
PPTX
이펙티브 C++ 공부
PPTX
C++ struct copy
PDF
Effective c++ chapter3, 4 요약본
PDF
Tcpl 12장 파생클래스
PPT
effective c++ chapter 3~4 정리
PPTX
이펙티브 C++ 스터디
PPTX
[HaU] 신입 기술 면접 준비 java
9 object class
게임프로그래밍입문 7
08장 객체와 클래스 (기본)
이펙티브 C++ 5,6 장 스터디
5 6 1
Hello, C# : OOP
Effective c++ chapter5 6_ 131039 신동찬
Effective c++(chapter 5,6)
Effective c++ 3
강의자료3
객체지향 단어가 의미하는 것
The c++ programming language 10장 클래스 발표
Effective c++chapter4
이펙티브 C++ 공부
C++ struct copy
Effective c++ chapter3, 4 요약본
Tcpl 12장 파생클래스
effective c++ chapter 3~4 정리
이펙티브 C++ 스터디
[HaU] 신입 기술 면접 준비 java
Ad

More from MinGeun Park (20)

PDF
[데브루키] 게임 엔진 아키텍쳐_3장_게임을 위한 소프트웨어 엔지니어링 기초
PDF
[데브루키] 게임 엔진 아키텍쳐_2장_도구 (Game Engine Architecture Chapter.2-Tools)
PDF
게임 엔진 아키텍쳐_1장 요약 by 알콜코더(초중급 게임 개발자 스터디 데브루키)
PDF
[CSStudy] 코딩인터뷰 완전 분석 #7.pdf
PDF
[Cs study] 코딩인터뷰 완전 분석 #6
PDF
[Cs study] 코딩인터뷰 완전 분석 #5
PDF
[Cs study] 코딩인터뷰 완전 분석 #3
PDF
[Cs study] 코딩인터뷰 완전 분석 #2
PDF
[Cs study] 코딩인터뷰 완전 분석
PPTX
[데브루키_언리얼스터디_0525] 애니메이션 노티파이
PDF
[데브루키] 이벤트 드리븐 아키텍쳐
PPTX
[데브루키 언리얼 스터디] PBR
PDF
[데브루키 언리얼 스터디] 스터디 안내 OT
PPTX
[데브루키/페차쿠차] 유니티 프로파일링에 대해서 알아보자.
PDF
[데브루키] Color space gamma correction
PPTX
유니티 팁&트릭 Unity Tip & Trick
PPTX
Live2D with Unity - 그녀들을 움직이게 하는 기술 (알콜코더 박민근)
PPTX
[RAPA/C++] 1. 수업 내용 및 진행 방법
PPTX
[Unite17] 유니티에서차세대프로그래밍을 UniRx 소개 및 활용
PPTX
유니티의 툰셰이딩을 사용한 3D 애니메이션 표현
[데브루키] 게임 엔진 아키텍쳐_3장_게임을 위한 소프트웨어 엔지니어링 기초
[데브루키] 게임 엔진 아키텍쳐_2장_도구 (Game Engine Architecture Chapter.2-Tools)
게임 엔진 아키텍쳐_1장 요약 by 알콜코더(초중급 게임 개발자 스터디 데브루키)
[CSStudy] 코딩인터뷰 완전 분석 #7.pdf
[Cs study] 코딩인터뷰 완전 분석 #6
[Cs study] 코딩인터뷰 완전 분석 #5
[Cs study] 코딩인터뷰 완전 분석 #3
[Cs study] 코딩인터뷰 완전 분석 #2
[Cs study] 코딩인터뷰 완전 분석
[데브루키_언리얼스터디_0525] 애니메이션 노티파이
[데브루키] 이벤트 드리븐 아키텍쳐
[데브루키 언리얼 스터디] PBR
[데브루키 언리얼 스터디] 스터디 안내 OT
[데브루키/페차쿠차] 유니티 프로파일링에 대해서 알아보자.
[데브루키] Color space gamma correction
유니티 팁&트릭 Unity Tip & Trick
Live2D with Unity - 그녀들을 움직이게 하는 기술 (알콜코더 박민근)
[RAPA/C++] 1. 수업 내용 및 진행 방법
[Unite17] 유니티에서차세대프로그래밍을 UniRx 소개 및 활용
유니티의 툰셰이딩을 사용한 3D 애니메이션 표현
Ad

[C++ lab] 3. c++ 프로그래밍

  • 5. 객체 캐릭터 머리모양, 키, 피부색 공격력, 방어력 속성 행동 레벨 아이템 달리기, 서있기, 앉 기 공격하기, 방어하기 맞기, 죽기
  • 8. 크기와 색상이 달라도 다 같은거…
  • 10. 클래스의 상속 구조 부모 클래스 자식 클래스
  • 11. 상속 관계 (is a 관계) 구체화 로보트 일반화
  • 12. 상속 관계 • 부모의 특성 (속성, 행동)을 그대로 상속 받아, 같은 특성을 가질 수 있다. • 부모 클래스를 좀 더 구체화 시켜서 설계 한다는 개념 • 각 클래스끼리의 공통된 특성을 부모 클래스에 넣어서 각각의 파생 클래스 에서 재사용이 가능하다 • 부모 = 기본 클래스, 자식 = 파생 클래스 • 부모 <->자식 == 일반화 <-> 구체화 • 자식 클래스는 부모 클래스의 흉내를 낼 수 있다. (다형성)
  • 14. 객체는 내가 중심이다 다른 객체에 대해서는 신경쓰지 않아도 된다.
  • 17. 생성자와 소멸자 • 생성자 객체가 처음 생성 될 때, 자동으로 호출 되는 함수 • 변수의 초기화 작업을 넣는다. • 최초 실행되어야 할 행동들을 넣는다 • 필요한 내부 객체들을 생성한다. • 소멸자 객체가 파괴될 때, 자동으로 호출 되는 함수 • 할당된 메모리의 해제 작업 • 할당된 내부 객체들의 파괴 작업 • 기타 마지막에 실행되어야 할 행동들을 넣는다.
  • 18. 생성자와 소멸자 – 상속 관계 • 자식 클래스가 생성될때 부모의 생성자 함수는 자동 호출 된다. • 자식 클래스가 소멸될때 부모의 소멸자 함수도 자동 호출 된다.
  • 20. Ship 클래스 – 멤버 변수, 멤버 함수
  • 21. 접근 제한 • 은닉성 • • 노출하지 않아도 되는 정보는 보여주거나 제공할 필요가 없다. 외부에서 함부로 변경 못함
  • 22. 접근 권한 설정하기(2) 멤버의 접근 권한 설정하기 [21-23] 접근 권한 키워드에 대한 요약 (뒤에서 더욱 자세히 분류) public : 외부에서의 접근을 허용한다. protected, private : 외부에서 접근할 수 없다.
  • 23. 클래스 내부, 외부, 자식 클래스 관계 Public – 모두에게 공개 한다 • 아무나 사용할 수 있다. • 함수 – 객체를 사용하는 누구든 호출 가능 • 변수 – 객체를 사용하는 누구든 값의 변경 및 사용 가능 Protected – 우리 집안것! 내 자식들만 사용 가능 • 자신과 자식 클래스만 사용이 가능하다. • 함수 – 나와 내 자식 클래스 내부에서만 호출 가능 • 변수 – 나와 내 자식 자식 클래스 내부에서면 변경 및 사용 가능 Private – 이건 나만의 것! 내 자식도 못씀! 내거야!! • 자신만 사용이 가능하다 • 함수, 변수 전부 클래스 자기 자신만 사용 가능
  • 24. 접근 권한 설정하기(1) 멤버의 접근 권한을 설정하는 예 class AccessControl { public: char publicData; void publicFunc() {}; protected: int protectedData; void protectedFunc() {}; private: float privateData; void privateFunc() {}; }; int main() { // 객체를 생성하고, 각 멤버에 접근해보자 AccessControl ac; ac.publicData = 'A'; ac.publicFunc(); ac.protectedData = 100; ac.protectedFunc(); ac.privateData = 4.5f; ac.privateFunc(); // // // // // // 성공 성공 실패 실패 실패 실패
  • 26. enum 열거형 • • • • • 타입 종류같은 열거 해야 하는 값들을 저장하는 데이터 타입 내부적으로는 int 형과 같은 4바이트 변수다. 변수안에 들어갈 값들을 제한하여 정한다고 생각하면 된다. 정의된 값들은 디폴트로 0부터 순차적으로 증가한다. 0이 아닌 다른 특정한 값(int형)으로 정의할 수도 있다. 예) 히트 결과 • 함수 반환 값으로 구별이 필요 • Int형으로 반환 => 0 – 미스, 1 – 히트, 2 – 파괴 • enum 형으로 선언 • MISS, HIT, DESTROY • 반환값으로 enum 형을 반환
  • 28. 구조체 • 여러가지 다른 타입의 데이터의 묶음 • 관련된 다양한 데이터를 하나의 묶음 데이터로 처리할 수 있다. • 예) 배의 위치 : x좌표, y좌표
  • 30. C 문자열 (char[]) 문자(char)의 배열 szTest의 값 = 배열 시작 위치(포인터) I L o v e Y o u ~ P r o f 0 길이가 17개인 고정 문자 배열 Char[17]
  • 31. std::string • 가변 문자열 템플릿 클래스 • 문자열의 길이에 상관 없이 문자열을 담을 수 있다 . • 내부적으로는 문자의 가변 배열로 구성 되어 있다. • C 형태의 문자열(문자배열 char[])로 변환이 필요한 경우에는 c_str() 멤버 함수를 사용 한다.
  • 32. sprintf_s() • sprintf_s(결과를 담을 문자 배열, 포맷, argument,..) • printf에서 출력 결과를, 입력 받은 배열에 담는다고 생각하면 된다. • 문자열의 변경이나 복사, 추가등에 활용할 수 있다. • 임의의 문자열 조합등을 문자열 배열에 담는다고 할 수 있다.