SlideShare a Scribd company logo
게임 프로그래밍 입문
기연아
함수
게임 프로그래밍
함수 인자 전달 방식
 Call-by-value
 값을 복사해서 함수로 넘겨주는 방식
 값만 복사하는 것이기 때문에 원본의 값이 변경되지 않음
 고비용, 복사손실의 문제 발생 가능
 Call-by-reference
 주소의 값을 함수로 넘겨주는 방식
 원본의 값이 변경됨
Call-by-value
Call-by-reference
구조체(Struct)
게임 프로그래밍
구조체란?
 서로 다른 자료형을 묶어서 변수로 사용할 수 있음
 이들을 묶어서 새롭게 정의할 수 있는 자료형
구조체 사용하기
 구조체를 초기화하여 하나의 변수처럼 사용 가능
구조체 사용하기
 구조체를 초기화하여 하나의 변수처럼 사용 가능
구조체 사용하기
 한 번에 여러 개의 구조체 값을 초기화할 수 있음
구조체 사용하기
 구조체 복사하여 사용하기
구조체 사용하기
 구조체 값을 입력받아서 사용하기
실습1
 나만의 새로운 구조체를 선언
 구조체 값을 입력하는 부분을 함수화해서 만들어보기
 구조체의 값을 출력하는 부분을 함수화해서 만들어보기
01 #include<iostream>
02 using namespace std;
03 struct namecard{
04 char name[20];
05 char job[30];
06 char tel[20];
07 char email[40];
08 };
09
10 void structPrn(namecard temp);
11 void structInput(namecard &temp);
12
13 void main()
14 {
15 namecard x, y, z;
16
17 structInput(x); // 함수의 호출
18 structInput(y);
19 structInput(z);
20
21 cout<<"n 이름 직업 연락처 이메일 ";
22 cout<<"n===========================================================";
23 structPrn(x);
24 structPrn(y);
25 structPrn(z);
26 cout<<"n=======================================================n";
27 }
28
29 void structPrn(namecard temp) // 함수의 정의
30 {
31 cout<<"n"<<temp.name<<"t"<<temp.job<<"t"<<temp.tel<<"t"<<temp.email;
32 }
33
34 void structInput(namecard &temp)
35 {
36 cout<<"n이름을 입력하세요=>";
37 cin>>temp.name;
38 cout<<"직업을 입력하세요=>";
39 cin>>temp.job;
40 cout<<"연락처를 입력하세요=>";
41 cin>>temp.tel;
42 cout<<"이메일을 입력하세요=>";
43 cin>>temp.email;
44 }
클래스(Class)
게임 프로그래밍
클래스란?
 함수를 멤버변수로 갖는 구조체의 확장판
 자료와 함수를 하나로 묶어서 사용
 객체를 정의하는 수단
 클래스에서 생성된 것을 객체라고 부름
 이 객체를 중심으로 프로그래밍이 진행됨
객체지향 프로그래밍이란?
 객체를 중심으로 하는 프로그래밍
 Object-oriented Programming
 새로운 자료형
 멤버 변수와 멤버 함수로 구성되어 데이터의 저장과 처리를 모두
수행할 수 있음
클래스의 정의
클래스 멤버의 접근 권한
 private
 클래스 멤버 함수에서만 접근 가능(데이터 은닉)
 private:을 붙이지 않으면 default를 private으로 인식함
 멤버 변수를 주로 private로 설정
 public
 객체가 선언되어 있는 영역에서 어디든지 사용 가능
 Public: 아래에 적어야함
 멤버 변수를 처리하기 위한 목적으로 작성하는 멤버 함수는 주로
public으로 설정
클래스 멤버의 접근 권한
생성자와 소멸자
 생성자
 객체를 생성할 때 기본 자료형처럼 초기값을 줄 수 있는데 그 것을
가능하게 하는 것이 생성자임
 생성자는 멤버함수로 사용
 생성자의 이름은 클래스 이름과 동일하게 사용
 생성자는 자료형(반환값의 유형)을 지정하지 않음
 생성자는 객체를 선언/생성할 때 컴파일러에 의해 자동으로 호출
 객체의 초기화는 멤버변수의 초기화를 의미
 소멸자
 객체가 소멸될 때 자동으로 호출되며 객체를 정리하는 작업을 하는
멤버함수임
 생성자와 마찬가지로 클래스 이름으로 함수 이름을 사용
 생성자와 구분하기 위해 앞에 ~(틸드)기호를 붙임
 생성자와 달리 소멸자는 다중정의를 할 수 없음
생성자와 소멸자
 실제로 class에서 생성자와 소멸자가 정상적으로 호출되는지
확인해보자
실습2
 두 개의 숫자를 설정하는 함수
 두 개의 숫자를 더하는 함수
 두 개의 숫자를 빼는 함수
 위 세개의 함수를 클래스에 정의하여 덧셈, 뺄셈을 수행하도
록 구현
#include <iostream>
using namespace std;
class calculate{
private:
int num1;
int num2;
public:
int add();
int minus();
void setNum();
};
void calculate::setNum()
{
num1 = 10;
num2 = 5;
}
int calculate::add()
{ return num1+num2;
}
int calculate::minus()
{
return num1-num2;
}
int main()
{ int sum;
int sub;
calculate a;
a.setNum();
sum = a.add();
sub = a.minus();
cout << "sum is " << sum << " sub is " << sub << endl;
return 0;
}
클래스 상속
 하나의 클래스를 또 다른 클래스에서 사용할 수 있도록 물려
주는 개념

More Related Content

What's hot

디자인 패턴(Observer, visitor)
디자인 패턴(Observer, visitor)디자인 패턴(Observer, visitor)
디자인 패턴(Observer, visitor)
세빈 정
 
Scala self type inheritance
Scala self type inheritanceScala self type inheritance
Scala self type inheritance
Yong Joon Moon
 
9 object class
9 object class9 object class
9 object class웅식 전
 
주니어 개발자도 이해 할 수 있는 Go - Scope 편
주니어 개발자도 이해 할 수 있는 Go - Scope 편주니어 개발자도 이해 할 수 있는 Go - Scope 편
주니어 개발자도 이해 할 수 있는 Go - Scope 편
Darion Kim
 
주니어 개발자도 이해 할 수 있는 Go - Namespace 편
주니어 개발자도 이해 할 수 있는 Go - Namespace 편주니어 개발자도 이해 할 수 있는 Go - Namespace 편
주니어 개발자도 이해 할 수 있는 Go - Namespace 편
Darion Kim
 
Secrets of the JavaScript Ninja - Chapter 3. Functions are Fundamental
Secrets of the JavaScript Ninja - Chapter 3. Functions are FundamentalSecrets of the JavaScript Ninja - Chapter 3. Functions are Fundamental
Secrets of the JavaScript Ninja - Chapter 3. Functions are Fundamental
Hyuncheol Jeon
 
파이썬 유용한 라이브러리
파이썬 유용한 라이브러리파이썬 유용한 라이브러리
파이썬 유용한 라이브러리
SeongHyun Ahn
 
[IT기술칼럼 #4] 고급자바스크립트 for AngularJS, React_고급자바스크립트,AngularJS,React전문교육학원
[IT기술칼럼 #4] 고급자바스크립트 for AngularJS, React_고급자바스크립트,AngularJS,React전문교육학원[IT기술칼럼 #4] 고급자바스크립트 for AngularJS, React_고급자바스크립트,AngularJS,React전문교육학원
[IT기술칼럼 #4] 고급자바스크립트 for AngularJS, React_고급자바스크립트,AngularJS,React전문교육학원
탑크리에듀(구로디지털단지역3번출구 2분거리)
 
Swift extensions
Swift extensionsSwift extensions
Swift extensions
wileychoi
 
파이썬 Descriptor이해하기 20160403
파이썬 Descriptor이해하기 20160403파이썬 Descriptor이해하기 20160403
파이썬 Descriptor이해하기 20160403
Yong Joon Moon
 
파이썬 모듈 패키지
파이썬 모듈 패키지파이썬 모듈 패키지
파이썬 모듈 패키지
SeongHyun Ahn
 
Start IoT with JavaScript - 1.기초
Start IoT with JavaScript - 1.기초Start IoT with JavaScript - 1.기초
Start IoT with JavaScript - 1.기초
Park Jonggun
 
QnA blog using Django - ORM, 회원가입, 로그인/로그아웃
QnA blog using Django - ORM, 회원가입, 로그인/로그아웃QnA blog using Django - ORM, 회원가입, 로그인/로그아웃
QnA blog using Django - ORM, 회원가입, 로그인/로그아웃
Kwangyoun Jung
 
Java class
Java classJava class
Java class
Hyosang Hong
 
Java, android 스터티2
Java, android 스터티2Java, android 스터티2
Java, android 스터티2
Heejun Kim
 
좌충우돌 ORM 개발기 | Devon 2012
좌충우돌 ORM 개발기 | Devon 2012좌충우돌 ORM 개발기 | Devon 2012
좌충우돌 ORM 개발기 | Devon 2012Daum DNA
 
0.javascript기본(~3일차내)
0.javascript기본(~3일차내)0.javascript기본(~3일차내)
0.javascript기본(~3일차내)Sung-hoon Ma
 

What's hot (19)

디자인 패턴(Observer, visitor)
디자인 패턴(Observer, visitor)디자인 패턴(Observer, visitor)
디자인 패턴(Observer, visitor)
 
Scala self type inheritance
Scala self type inheritanceScala self type inheritance
Scala self type inheritance
 
9 object class
9 object class9 object class
9 object class
 
주니어 개발자도 이해 할 수 있는 Go - Scope 편
주니어 개발자도 이해 할 수 있는 Go - Scope 편주니어 개발자도 이해 할 수 있는 Go - Scope 편
주니어 개발자도 이해 할 수 있는 Go - Scope 편
 
주니어 개발자도 이해 할 수 있는 Go - Namespace 편
주니어 개발자도 이해 할 수 있는 Go - Namespace 편주니어 개발자도 이해 할 수 있는 Go - Namespace 편
주니어 개발자도 이해 할 수 있는 Go - Namespace 편
 
Javascript 101
Javascript 101Javascript 101
Javascript 101
 
Secrets of the JavaScript Ninja - Chapter 3. Functions are Fundamental
Secrets of the JavaScript Ninja - Chapter 3. Functions are FundamentalSecrets of the JavaScript Ninja - Chapter 3. Functions are Fundamental
Secrets of the JavaScript Ninja - Chapter 3. Functions are Fundamental
 
파이썬 유용한 라이브러리
파이썬 유용한 라이브러리파이썬 유용한 라이브러리
파이썬 유용한 라이브러리
 
[IT기술칼럼 #4] 고급자바스크립트 for AngularJS, React_고급자바스크립트,AngularJS,React전문교육학원
[IT기술칼럼 #4] 고급자바스크립트 for AngularJS, React_고급자바스크립트,AngularJS,React전문교육학원[IT기술칼럼 #4] 고급자바스크립트 for AngularJS, React_고급자바스크립트,AngularJS,React전문교육학원
[IT기술칼럼 #4] 고급자바스크립트 for AngularJS, React_고급자바스크립트,AngularJS,React전문교육학원
 
Swift extensions
Swift extensionsSwift extensions
Swift extensions
 
파이썬 Descriptor이해하기 20160403
파이썬 Descriptor이해하기 20160403파이썬 Descriptor이해하기 20160403
파이썬 Descriptor이해하기 20160403
 
파이썬 모듈 패키지
파이썬 모듈 패키지파이썬 모듈 패키지
파이썬 모듈 패키지
 
Start IoT with JavaScript - 1.기초
Start IoT with JavaScript - 1.기초Start IoT with JavaScript - 1.기초
Start IoT with JavaScript - 1.기초
 
QnA blog using Django - ORM, 회원가입, 로그인/로그아웃
QnA blog using Django - ORM, 회원가입, 로그인/로그아웃QnA blog using Django - ORM, 회원가입, 로그인/로그아웃
QnA blog using Django - ORM, 회원가입, 로그인/로그아웃
 
Java class
Java classJava class
Java class
 
Java, android 스터티2
Java, android 스터티2Java, android 스터티2
Java, android 스터티2
 
좌충우돌 ORM 개발기 | Devon 2012
좌충우돌 ORM 개발기 | Devon 2012좌충우돌 ORM 개발기 | Devon 2012
좌충우돌 ORM 개발기 | Devon 2012
 
0.javascript기본(~3일차내)
0.javascript기본(~3일차내)0.javascript기본(~3일차내)
0.javascript기본(~3일차내)
 
5 6 1
5 6 15 6 1
5 6 1
 

Viewers also liked

Kazakh law1 13
Kazakh law1 13Kazakh law1 13
Kazakh law1 13
Jefferson Witt
 
ป่าที่ยังเหลือ
ป่าที่ยังเหลือป่าที่ยังเหลือ
ป่าที่ยังเหลือ
Jiranun Phahonthammasan
 
Nano college 2016 summer lanugage bug
Nano college 2016 summer lanugage bugNano college 2016 summer lanugage bug
Nano college 2016 summer lanugage bug
Peng Zhang (Max)
 
Los condenados de coiba. 3 2016
Los condenados de coiba.  3  2016Los condenados de coiba.  3  2016
Los condenados de coiba. 3 2016
Yariela Al-Bayaty
 
งานคอม (แผงปลูกข้าวลอยน้ำ)
งานคอม (แผงปลูกข้าวลอยน้ำ)งานคอม (แผงปลูกข้าวลอยน้ำ)
งานคอม (แผงปลูกข้าวลอยน้ำ)
Sivagon Soontong
 
2011 organic cosmetics branding .2
2011 organic cosmetics branding .22011 organic cosmetics branding .2
2011 organic cosmetics branding .2
Paul Vickers
 

Viewers also liked (6)

Kazakh law1 13
Kazakh law1 13Kazakh law1 13
Kazakh law1 13
 
ป่าที่ยังเหลือ
ป่าที่ยังเหลือป่าที่ยังเหลือ
ป่าที่ยังเหลือ
 
Nano college 2016 summer lanugage bug
Nano college 2016 summer lanugage bugNano college 2016 summer lanugage bug
Nano college 2016 summer lanugage bug
 
Los condenados de coiba. 3 2016
Los condenados de coiba.  3  2016Los condenados de coiba.  3  2016
Los condenados de coiba. 3 2016
 
งานคอม (แผงปลูกข้าวลอยน้ำ)
งานคอม (แผงปลูกข้าวลอยน้ำ)งานคอม (แผงปลูกข้าวลอยน้ำ)
งานคอม (แผงปลูกข้าวลอยน้ำ)
 
2011 organic cosmetics branding .2
2011 organic cosmetics branding .22011 organic cosmetics branding .2
2011 organic cosmetics branding .2
 

Similar to 게임프로그래밍입문 7

Effective c++ Chapter1,2
Effective c++ Chapter1,2Effective c++ Chapter1,2
Effective c++ Chapter1,2문익 장
 
이펙티브 C++ 스터디
이펙티브 C++ 스터디이펙티브 C++ 스터디
이펙티브 C++ 스터디
quxn6
 
2014-15 Intermediate C++ Study #6
2014-15 Intermediate C++ Study #62014-15 Intermediate C++ Study #6
2014-15 Intermediate C++ Study #6
Chris Ohk
 
M5 6 1
M5 6 1M5 6 1
M5 6 1nexthw
 
Javascript 교육자료 pdf
Javascript 교육자료 pdfJavascript 교육자료 pdf
Javascript 교육자료 pdf
Hyosang Hong
 
안드로이드기초
안드로이드기초안드로이드기초
안드로이드기초hylo926
 
Effective cpp
Effective cppEffective cpp
Effective cpp
TonyCms
 
이펙티브 C++ 공부
이펙티브 C++ 공부이펙티브 C++ 공부
이펙티브 C++ 공부quxn6
 
Refelction의 개념과 RTTR 라이브러리
Refelction의 개념과 RTTR 라이브러리Refelction의 개념과 RTTR 라이브러리
Refelction의 개념과 RTTR 라이브러리
ssuser7c5a40
 
이것이 자바다 Chap.11 기본 API 클래스(java)(KOR)
이것이 자바다 Chap.11 기본 API 클래스(java)(KOR)이것이 자바다 Chap.11 기본 API 클래스(java)(KOR)
이것이 자바다 Chap.11 기본 API 클래스(java)(KOR)
MIN SEOK KOO
 
이펙티브 C++ 5,6 장 스터디
이펙티브 C++ 5,6 장 스터디이펙티브 C++ 5,6 장 스터디
이펙티브 C++ 5,6 장 스터디
quxn6
 
Programming java day2
Programming java day2Programming java day2
Programming java day2Jaehoonyam
 
[HaU] 신입 기술 면접 준비 java
[HaU] 신입 기술 면접 준비 java[HaU] 신입 기술 면접 준비 java
[HaU] 신입 기술 면접 준비 java
유리 하
 
파이썬+주요+용어+정리 20160304
파이썬+주요+용어+정리 20160304파이썬+주요+용어+정리 20160304
파이썬+주요+용어+정리 20160304
Yong Joon Moon
 
Swift3 subscript inheritance initialization
Swift3 subscript inheritance initializationSwift3 subscript inheritance initialization
Swift3 subscript inheritance initialization
Eunjoo Im
 
[0618구경원]초보 게임프로그래머를 위한 c++
[0618구경원]초보 게임프로그래머를 위한 c++[0618구경원]초보 게임프로그래머를 위한 c++
[0618구경원]초보 게임프로그래머를 위한 c++KyeongWon Koo
 
이펙티브 C++ (7~9)
이펙티브 C++ (7~9)이펙티브 C++ (7~9)
이펙티브 C++ (7~9)익성 조
 
Api design for c++ ch3 pattern
Api design for c++ ch3 patternApi design for c++ ch3 pattern
Api design for c++ ch3 patternjinho park
 
[0820 석재호]headfirst디자인패턴
[0820 석재호]headfirst디자인패턴[0820 석재호]headfirst디자인패턴
[0820 석재호]headfirst디자인패턴Jaeho Seok
 
More effective c++ 항목30부터
More effective c++ 항목30부터More effective c++ 항목30부터
More effective c++ 항목30부터
Dong Chan Shin
 

Similar to 게임프로그래밍입문 7 (20)

Effective c++ Chapter1,2
Effective c++ Chapter1,2Effective c++ Chapter1,2
Effective c++ Chapter1,2
 
이펙티브 C++ 스터디
이펙티브 C++ 스터디이펙티브 C++ 스터디
이펙티브 C++ 스터디
 
2014-15 Intermediate C++ Study #6
2014-15 Intermediate C++ Study #62014-15 Intermediate C++ Study #6
2014-15 Intermediate C++ Study #6
 
M5 6 1
M5 6 1M5 6 1
M5 6 1
 
Javascript 교육자료 pdf
Javascript 교육자료 pdfJavascript 교육자료 pdf
Javascript 교육자료 pdf
 
안드로이드기초
안드로이드기초안드로이드기초
안드로이드기초
 
Effective cpp
Effective cppEffective cpp
Effective cpp
 
이펙티브 C++ 공부
이펙티브 C++ 공부이펙티브 C++ 공부
이펙티브 C++ 공부
 
Refelction의 개념과 RTTR 라이브러리
Refelction의 개념과 RTTR 라이브러리Refelction의 개념과 RTTR 라이브러리
Refelction의 개념과 RTTR 라이브러리
 
이것이 자바다 Chap.11 기본 API 클래스(java)(KOR)
이것이 자바다 Chap.11 기본 API 클래스(java)(KOR)이것이 자바다 Chap.11 기본 API 클래스(java)(KOR)
이것이 자바다 Chap.11 기본 API 클래스(java)(KOR)
 
이펙티브 C++ 5,6 장 스터디
이펙티브 C++ 5,6 장 스터디이펙티브 C++ 5,6 장 스터디
이펙티브 C++ 5,6 장 스터디
 
Programming java day2
Programming java day2Programming java day2
Programming java day2
 
[HaU] 신입 기술 면접 준비 java
[HaU] 신입 기술 면접 준비 java[HaU] 신입 기술 면접 준비 java
[HaU] 신입 기술 면접 준비 java
 
파이썬+주요+용어+정리 20160304
파이썬+주요+용어+정리 20160304파이썬+주요+용어+정리 20160304
파이썬+주요+용어+정리 20160304
 
Swift3 subscript inheritance initialization
Swift3 subscript inheritance initializationSwift3 subscript inheritance initialization
Swift3 subscript inheritance initialization
 
[0618구경원]초보 게임프로그래머를 위한 c++
[0618구경원]초보 게임프로그래머를 위한 c++[0618구경원]초보 게임프로그래머를 위한 c++
[0618구경원]초보 게임프로그래머를 위한 c++
 
이펙티브 C++ (7~9)
이펙티브 C++ (7~9)이펙티브 C++ (7~9)
이펙티브 C++ (7~9)
 
Api design for c++ ch3 pattern
Api design for c++ ch3 patternApi design for c++ ch3 pattern
Api design for c++ ch3 pattern
 
[0820 석재호]headfirst디자인패턴
[0820 석재호]headfirst디자인패턴[0820 석재호]headfirst디자인패턴
[0820 석재호]headfirst디자인패턴
 
More effective c++ 항목30부터
More effective c++ 항목30부터More effective c++ 항목30부터
More effective c++ 항목30부터
 

More from Yeonah Ki

게임프로그래밍입문 9
게임프로그래밍입문 9게임프로그래밍입문 9
게임프로그래밍입문 9
Yeonah Ki
 
게임프로그래밍입문 6주차 강의자료
게임프로그래밍입문 6주차 강의자료게임프로그래밍입문 6주차 강의자료
게임프로그래밍입문 6주차 강의자료
Yeonah Ki
 
게임프로그래밍입문 5주차
게임프로그래밍입문 5주차게임프로그래밍입문 5주차
게임프로그래밍입문 5주차
Yeonah Ki
 
게임프로그래밍입문 4주차
게임프로그래밍입문 4주차게임프로그래밍입문 4주차
게임프로그래밍입문 4주차
Yeonah Ki
 
게임프로그래밍입문 3주차
게임프로그래밍입문 3주차게임프로그래밍입문 3주차
게임프로그래밍입문 3주차
Yeonah Ki
 
게임프로그래밍입문 2주차
게임프로그래밍입문 2주차게임프로그래밍입문 2주차
게임프로그래밍입문 2주차
Yeonah Ki
 
게임프로그래밍입문 1주차
게임프로그래밍입문 1주차게임프로그래밍입문 1주차
게임프로그래밍입문 1주차
Yeonah Ki
 
About raspberrypi
About raspberrypiAbout raspberrypi
About raspberrypi
Yeonah Ki
 
Start io t_with_raspberrypi
Start io t_with_raspberrypiStart io t_with_raspberrypi
Start io t_with_raspberrypi
Yeonah Ki
 
Circulus Raspberry Pi wifi setting guide
Circulus Raspberry Pi wifi setting guideCirculus Raspberry Pi wifi setting guide
Circulus Raspberry Pi wifi setting guide
Yeonah Ki
 
Circulus user guide
Circulus user guideCirculus user guide
Circulus user guide
Yeonah Ki
 
Circulus user guide
Circulus user guideCirculus user guide
Circulus user guideYeonah Ki
 

More from Yeonah Ki (12)

게임프로그래밍입문 9
게임프로그래밍입문 9게임프로그래밍입문 9
게임프로그래밍입문 9
 
게임프로그래밍입문 6주차 강의자료
게임프로그래밍입문 6주차 강의자료게임프로그래밍입문 6주차 강의자료
게임프로그래밍입문 6주차 강의자료
 
게임프로그래밍입문 5주차
게임프로그래밍입문 5주차게임프로그래밍입문 5주차
게임프로그래밍입문 5주차
 
게임프로그래밍입문 4주차
게임프로그래밍입문 4주차게임프로그래밍입문 4주차
게임프로그래밍입문 4주차
 
게임프로그래밍입문 3주차
게임프로그래밍입문 3주차게임프로그래밍입문 3주차
게임프로그래밍입문 3주차
 
게임프로그래밍입문 2주차
게임프로그래밍입문 2주차게임프로그래밍입문 2주차
게임프로그래밍입문 2주차
 
게임프로그래밍입문 1주차
게임프로그래밍입문 1주차게임프로그래밍입문 1주차
게임프로그래밍입문 1주차
 
About raspberrypi
About raspberrypiAbout raspberrypi
About raspberrypi
 
Start io t_with_raspberrypi
Start io t_with_raspberrypiStart io t_with_raspberrypi
Start io t_with_raspberrypi
 
Circulus Raspberry Pi wifi setting guide
Circulus Raspberry Pi wifi setting guideCirculus Raspberry Pi wifi setting guide
Circulus Raspberry Pi wifi setting guide
 
Circulus user guide
Circulus user guideCirculus user guide
Circulus user guide
 
Circulus user guide
Circulus user guideCirculus user guide
Circulus user guide
 

게임프로그래밍입문 7

  • 3. 함수 인자 전달 방식  Call-by-value  값을 복사해서 함수로 넘겨주는 방식  값만 복사하는 것이기 때문에 원본의 값이 변경되지 않음  고비용, 복사손실의 문제 발생 가능  Call-by-reference  주소의 값을 함수로 넘겨주는 방식  원본의 값이 변경됨
  • 7. 구조체란?  서로 다른 자료형을 묶어서 변수로 사용할 수 있음  이들을 묶어서 새롭게 정의할 수 있는 자료형
  • 8. 구조체 사용하기  구조체를 초기화하여 하나의 변수처럼 사용 가능
  • 9. 구조체 사용하기  구조체를 초기화하여 하나의 변수처럼 사용 가능
  • 10. 구조체 사용하기  한 번에 여러 개의 구조체 값을 초기화할 수 있음
  • 11. 구조체 사용하기  구조체 복사하여 사용하기
  • 12. 구조체 사용하기  구조체 값을 입력받아서 사용하기
  • 13. 실습1  나만의 새로운 구조체를 선언  구조체 값을 입력하는 부분을 함수화해서 만들어보기  구조체의 값을 출력하는 부분을 함수화해서 만들어보기
  • 14. 01 #include<iostream> 02 using namespace std; 03 struct namecard{ 04 char name[20]; 05 char job[30]; 06 char tel[20]; 07 char email[40]; 08 }; 09 10 void structPrn(namecard temp); 11 void structInput(namecard &temp); 12 13 void main() 14 { 15 namecard x, y, z; 16 17 structInput(x); // 함수의 호출 18 structInput(y); 19 structInput(z); 20 21 cout<<"n 이름 직업 연락처 이메일 "; 22 cout<<"n==========================================================="; 23 structPrn(x); 24 structPrn(y); 25 structPrn(z); 26 cout<<"n=======================================================n"; 27 } 28 29 void structPrn(namecard temp) // 함수의 정의 30 { 31 cout<<"n"<<temp.name<<"t"<<temp.job<<"t"<<temp.tel<<"t"<<temp.email; 32 } 33 34 void structInput(namecard &temp) 35 { 36 cout<<"n이름을 입력하세요=>"; 37 cin>>temp.name; 38 cout<<"직업을 입력하세요=>"; 39 cin>>temp.job; 40 cout<<"연락처를 입력하세요=>"; 41 cin>>temp.tel; 42 cout<<"이메일을 입력하세요=>"; 43 cin>>temp.email; 44 }
  • 16. 클래스란?  함수를 멤버변수로 갖는 구조체의 확장판  자료와 함수를 하나로 묶어서 사용  객체를 정의하는 수단  클래스에서 생성된 것을 객체라고 부름  이 객체를 중심으로 프로그래밍이 진행됨
  • 17. 객체지향 프로그래밍이란?  객체를 중심으로 하는 프로그래밍  Object-oriented Programming
  • 18.  새로운 자료형  멤버 변수와 멤버 함수로 구성되어 데이터의 저장과 처리를 모두 수행할 수 있음 클래스의 정의
  • 19. 클래스 멤버의 접근 권한  private  클래스 멤버 함수에서만 접근 가능(데이터 은닉)  private:을 붙이지 않으면 default를 private으로 인식함  멤버 변수를 주로 private로 설정  public  객체가 선언되어 있는 영역에서 어디든지 사용 가능  Public: 아래에 적어야함  멤버 변수를 처리하기 위한 목적으로 작성하는 멤버 함수는 주로 public으로 설정
  • 21. 생성자와 소멸자  생성자  객체를 생성할 때 기본 자료형처럼 초기값을 줄 수 있는데 그 것을 가능하게 하는 것이 생성자임  생성자는 멤버함수로 사용  생성자의 이름은 클래스 이름과 동일하게 사용  생성자는 자료형(반환값의 유형)을 지정하지 않음  생성자는 객체를 선언/생성할 때 컴파일러에 의해 자동으로 호출  객체의 초기화는 멤버변수의 초기화를 의미  소멸자  객체가 소멸될 때 자동으로 호출되며 객체를 정리하는 작업을 하는 멤버함수임  생성자와 마찬가지로 클래스 이름으로 함수 이름을 사용  생성자와 구분하기 위해 앞에 ~(틸드)기호를 붙임  생성자와 달리 소멸자는 다중정의를 할 수 없음
  • 22. 생성자와 소멸자  실제로 class에서 생성자와 소멸자가 정상적으로 호출되는지 확인해보자
  • 23. 실습2  두 개의 숫자를 설정하는 함수  두 개의 숫자를 더하는 함수  두 개의 숫자를 빼는 함수  위 세개의 함수를 클래스에 정의하여 덧셈, 뺄셈을 수행하도 록 구현
  • 24. #include <iostream> using namespace std; class calculate{ private: int num1; int num2; public: int add(); int minus(); void setNum(); }; void calculate::setNum() { num1 = 10; num2 = 5; } int calculate::add() { return num1+num2; } int calculate::minus() { return num1-num2; } int main() { int sum; int sub; calculate a; a.setNum(); sum = a.add(); sub = a.minus(); cout << "sum is " << sum << " sub is " << sub << endl; return 0; }
  • 25. 클래스 상속  하나의 클래스를 또 다른 클래스에서 사용할 수 있도록 물려 주는 개념

Editor's Notes

  1. Main함수에서 pNum을 사용했을 때 에러나는 것 확인