Microsoft PowerPoint - additional01.ppt [호환 모드]

Similar documents
Microsoft PowerPoint - Chapter 1-rev

PowerPoint Template

쉽게 풀어쓴 C 프로그래밍

PowerPoint Template

Microsoft PowerPoint - Chapter 6.ppt

C++ Programming

프입2-강의노트-C++기초

쉽게 풀어쓴 C 프로그래밍

금오공대 컴퓨터공학전공 강의자료

Microsoft PowerPoint - C++ 5 .pptx

Microsoft PowerPoint - 05장(함수) [호환 모드]

Microsoft PowerPoint - [2009] 02.pptx

설계란 무엇인가?

Microsoft PowerPoint - additional06.ppt [호환 모드]

1. 객체의생성과대입 int 형변수 : 선언과동시에초기화하는방법 (C++) int a = 3; int a(3); // 기본타입역시클래스와같이처리가능 객체의생성 ( 복습 ) class CPoint private : int x, y; public : CPoint(int a

C++ Programming

Microsoft PowerPoint - additional08.ppt [호환 모드]

슬라이드 1

C프로-3장c03逞풚

1. 표준입출력 C++ : C의모든라이브러리를포함 printf, scanf 함수사용가능예 : int, double, 문자열값을입력받고출력하기 #include <cstdio> int ivar; double dvar; char str[20]; printf("int, dou

(Microsoft PowerPoint - 07\300\345.ppt [\310\243\310\257 \270\360\265\345])

슬라이드 1

Microsoft PowerPoint - Chapter 10.ppt

Microsoft PowerPoint - 8ÀÏ°_Æ÷ÀÎÅÍ.ppt

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx

[ 마이크로프로세서 1] 2 주차 3 차시. 포인터와구조체 2 주차 3 차시포인터와구조체 학습목표 1. C 언어에서가장어려운포인터와구조체를설명할수있다. 2. Call By Value 와 Call By Reference 를구분할수있다. 학습내용 1 : 함수 (Functi

설계란 무엇인가?

Microsoft PowerPoint - additional03.ppt [호환 모드]

4 장클래스와객체 클래스와객체 public과 private 구조체와클래스객체의생성과생성자객체의소멸과소멸자생성자와소멸자의호출순서디폴트생성자와디폴트소멸자멤버초기화멤버함수의외부정의멤버함수의인라인함수선언 C++ 프로그래밍입문

Microsoft PowerPoint - 3ÀÏ°_º¯¼ö¿Í »ó¼ö.ppt

1. auto_ptr 다음프로그램의문제점은무엇인가? void func(void) int *p = new int; cout << " 양수입력 : "; cin >> *p; if (*p <= 0) cout << " 양수를입력해야합니다 " << endl; return; 동적할

Microsoft PowerPoint - Chapter8.pptx

<4D F736F F F696E74202D2036C0CFC2B05FB0B4C3BCC1F6C7E2C7C1B7CEB1D7B7A1B9D62E707074>

PowerPoint Presentation

설계란 무엇인가?

C++ Programming

Visual C++ & OOP Fundamentals ( 2005/1/31~2005/2/4)

Microsoft PowerPoint - chap06-2pointer.ppt

C++ Programming

C++ Programming

(Microsoft PowerPoint - 11\300\345.ppt [\310\243\310\257 \270\360\265\345])

(Microsoft Word - \301\337\260\243\260\355\273\347.docx)

임베디드시스템설계강의자료 6 system call 2/2 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과

11장 포인터

Microsoft PowerPoint - additional-11_13l.ppt [호환 모드]

Microsoft PowerPoint - chap12-고급기능.pptx

Data Structure

Slide 1

PowerPoint Template

윤성우의 열혈 TCP/IP 소켓 프로그래밍

학습목차 2.1 다차원배열이란 차원배열의주소와값의참조

Microsoft PowerPoint - chap10-함수의활용.pptx

PowerPoint Presentation

쉽게 풀어쓴 C 프로그래밍

PowerPoint 프레젠테이션

1. 클래스와배열 int 형배열선언및초기화 int ary[5] = 1, 2, 3, 4, 5 ; for (int i = 0; i < 5; i++) cout << "ary[" << i << "] = " << ary[i] << endl; 5 장클래스의활용 1

Microsoft PowerPoint - chap06-5 [호환 모드]

Microsoft PowerPoint - 9ÀÏ°_ÂüÁ¶ÀÚ.ppt

Microsoft PowerPoint - Chapter 4-rev

class Sale void makelineitem(productspecification* spec, int qty) SalesLineItem* sl = new SalesLineItem(spec, qty); ; 2. 아래의액티비티다이어그램을보고 Java 또는 C ++,

080629_CFP °ø°³¿ë.hwp

Microsoft PowerPoint - additional07.ppt [호환 모드]

C언어 및 실습 C Language and Practice

C 언어 프로그래밊 과제 풀이

윤성우의 열혈 TCP/IP 소켓 프로그래밍

JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각

설계란 무엇인가?

프입2-강의노트-const-friend-static

Microsoft PowerPoint - chap03-변수와데이터형.pptx

OCW_C언어 기초

C++ Programming

02장.배열과 클래스

OCW_C언어 기초

PowerPoint 프레젠테이션

PowerPoint Presentation

3. 1 포인터란 3. 2 포인터변수의선언과사용 3. 3 다차원포인터변수의선언과사용 3. 4 주소의가감산 3. 5 함수포인터

PowerPoint 프레젠테이션

PowerPoint Presentation

쉽게 풀어쓴 C 프로그래밍

Microsoft PowerPoint - chap11-포인터의활용.pptx

17장 클래스와 메소드

PowerPoint Template

쉽게 풀어쓴 C 프로그래밍

<4D F736F F F696E74202D20B8AEB4AABDBA20BFC0B7F920C3B3B8AEC7CFB1E22E BC8A3C8AF20B8F0B5E55D>

PowerPoint 프레젠테이션

쉽게 풀어쓴 C 프로그래밍

JAVA PROGRAMMING 실습 08.다형성

제4장 기본 의미구조 (Basic Semantics)

PowerPoint Presentation

설계란 무엇인가?

KNK_C_05_Pointers_Arrays_structures_summary_v02

Microsoft PowerPoint - ch 전처리기, 다중 소스파일 pm1015

Microsoft PowerPoint - Chap12-OOP.ppt

The C++ Programming Language 4 장타입과선언 4.11 연습문제 Hello,world! 프로그램을실행시킨다. 프로그램이컴파일되지않으면 B3.1 을참고하자. #include<iostream> //#include 문, 헤더파일, 전처리지시

C 프로그래밊 개요

1. 상속의기본개념 다음과같은문제를위한클래스설계 자동차 속성 : 색상, 배기량, 현재속도 메서드 : 가속하라, 멈춰라, 시동을켜라 트럭 속성 : 색상, 배기량, 현재속도, 최대중량 메서드 : 가속하라, 멈춰라, 시동을켜라 택시 속성 : 색상, 배기량, 현재속도, 요금,

쉽게 풀어쓴 C 프로그래밍

1. 인라인함수 예 : x, y 값중최소값을반환하는매크로와함수작성 // 매크로로구현한경우 #define MIN(X, Y) ((X) < (Y)? (X) : (Y)) X, Y 각각을괄호 ( ) 안에넣는이유는? // 함수로구현한경우 cout << MIN(4, 5) << en

chap10.PDF

제 14 장포인터활용 유준범 (JUNBEOM YOO) Ver 본강의자료는생능출판사의 PPT 강의자료 를기반으로제작되었습니다.

Transcription:

1.C 기반의 C++ part 1 함수 오버로딩 (overloading) 디폴트매개변수 (default parameter) 인-라인함수 (in-line function) 이름공간 (namespace) Jong Hyuk Park

함수 Jong Hyuk Park

함수오버로딩 (overloading) 함수오버로딩 (function overloading) C++ 언어에서는같은이름을가진여러개의함수를정의가능 같은이름을갖는각함수는인수의형과갯수, 함수의반환형에의해구분 함수뿐만아니라연산자오버로딩도가능 ( 향후다시소개 ) 3

함수오버로딩 (overloading) 함수이름의중복! 파일의확장자는.C 이다! 무엇이문제? int function(void) return 10; int function(int a, int b) return a+b; 4 int main(void) function(); function(12, 13); return 0;

함수오버로딩 (overloading) 함수오버로딩이란? 동일한이름의함수를중복해서정의하는것! 함수오버로딩의조건 매개변수의개수혹은타입이일치하지않는다. 함수오버로딩이가능한이유 호출할함수를매개변수의정보까지참조해서호출 함수의이름 + 매개변수의정보 5

함수오버로딩 (overloading) 함수오버로딩의예 FunctionOverloading.cpp int function1(int n) int function1(char c) int function2(int v) int function2(int v1, int v2) 6

// 절대값함수의중복정의 #include <iostream> 오버로딩예 int abs(int n); // 정수의절대값함수 double abs(double n); // double 형실수의절대값함수 int main(void) -123 절대값 : 123 std::cout << "-123 절대값 : " -12.345 절대값 : 12.345 << abs(-123) << '\n'; std::cout << "-12.345 절대값 : " << abs(-12.345) << '\n'; 절대값을구하는 2 개의함수가 return 0; 모두같은이름의 abs() 로사용 되었으나각함수는서로다른 // 정수형인수의 abs() 함수인수의형에따라구분된다. int abs(int n) return n < 0? -n : n; // double 정수형인수의 abs() 함수 double abs(double n) return n < 0? -n : n; 7

디폴트매개변수 ( 인수 ) 디폴트매개변수란? 전달되지않은인자를대신하기위한기본값이 설정되어있는변수 8 그림 1-2

디폴트매개변수예 #include <iostream> int BoxVolume(int length, int width=1, int height=1); int main(void) std::cout<<"[3, 3, 3] : "<<BoxVolume(3, 3, 3)<<std::endl; std::cout<<"[5, 5, def] : "<<BoxVolume(5, 5)<<std::endl; std::cout<<"[7, def, def] : "<<BoxVolume(7)<<std::endl; return 0; int BoxVolume(int length, int width, int height) return length*width*height; [3, 3, 3] : 27 [5, 5, def] : 25 [7, def, def] : 7 9

디폴트매개변수 ( 인수 ) C++ 언어에서는함수선언시인수의디폴트 (default) 값을지정 디폴트값이지정된인수는함수호출시인수를생략 인수가생략된경우에는자동적으로디폴트값으로선언된값을인수로전달 인수의디폴트값의선언시디폴트값이선언된인수뒤에오는모든인수에대해서는디폴트값을지정해야함. 10

디폴트매개변수와함수오버로딩 #include<iostream> int function(int a=10) return a+1; int function(void) return 10; std::cout<<function()<<std::endl; int main(void) std::cout<<function(10)<<std::endl; return 0; 11

인-라인함수 (inline function) 인-라인함수를이용하여정의된함수를호출하면호출한함수로분기하여함수를실행한후복귀하는것이아니라호출한함수의내용을복사하여실행 C 언어의매크로정의함수를사용하는것과같은기능 매크로정의함수인경우인수의전달시부작용 (side effect) 을갖는데반하여확장함수는일반함수와같이부작용없이안전하게사용 인-라인함수는일반함수와같이함수로분기하여실행한후복귀하는과정이없이직접실행하므로일반함수보다프로그램의실행속도가빠름 함수를호출할때마다함수의내용이복사되므로프로그램의코드길이가길어진다는단점 일반적으로확장함수는코드의길이가짧은경우에주로사용 확장함수의정의는함수정의앞에 inline이란키워드를붙임 12

인라인 - 함수사용예 #include <iostream> #define SQUARE(x) ((x)*(x)) )) int main(void) std::cout<<square(5)<<std::endl; return 0; #include <iostream> inline int SQUARE(int x) return x*x; int main(void) std::cout<<square(5)<<std::endl; return 0; 13

이름공간 (namespace) Jong Hyuk Park

이름공간 (namespace) 이름공간 최근 C++ 에추가된기능으로변수, 함수이름등의영역지정기능 사용예 Lee와 Kim이두사람이독자적으로프로그램개발후통합하는예 두사람모두다른기능의 foo() 함수정의 namespace 으로이름공간정의, :: 으로이름공간표시 15 namespace Lee namespace Kim main() void foo() void foo() Kim::foo(); Lee::foo();

이름공간 (namespace) 16 이름공간이란? 공간에이름을주는행위! "202 호에사는철수야" #include <iostream> void function(void) std::cout<<"a.com에서정의한함수 "<<std::endl; void function(void) std::cout<<"b.com 에서정의한함수 "<<std::endl; int main(void) function(); return 0;

이름공간 (namespace) #include <iostream> Namespace A_COM void function(void) std::cout<<"a.com에서정의한함수 "<<std::endl; Namespace B_COM void function(void) std::cout<<"b.com 에서정의한함수 "<<std::endl; int main(void) A_COM::function(); B_COM::function() return 0; 17

이름공간 (namespace) 이름공간의적용 namespace1.cpp 그림 1-5 18 그림 1-4

이름공간 (namespace) 아하! std 란 namespace! 그림 1-6 19

이름공간 (namespace) 편의를위한 using 선언! using A_COM::function; using namespace A_COM; 20

표준라이브러리이름공간 C++ 컴파일러가제공하는표준라이브러리의함수, 변수, 클래스등은 std 이름공간영역으로지정 새 C++ 에서는.h 확장자생략하고이름공간명시 #include <iostream.h> main() cin >> data; cout << sum; #include <iostream> main() using std::cin; cin >> data; std::cout << sum; #include <iostream> using namespace std; main() cin >> data; cout << sum; 21

변수의범위지정연산자 C 언어에서는자동변수 ( 지역변수 ) 와외부변수 ( 전역변수 ) 가같은이름으로선언되어사용되었을때에는자동변수의값이참조 C++ 언어에서는이와같은경우변수앞에 :: 연산자를해당변수앞에기술하면외부변수를참조하는것이가능 22

범위지정연산자사용예 #include <iostream> using namespace std; int a = 88; 1-1 a = 10 1-2 ::a = 88 int main(void) 2-1 a = 20 int a = 30; 2-2 ::a = 88 3-1 a= 30 int a = 10; 3-2 ::a = 88 cout << "1-1 a = " << a << "\n"; // a = 10 참조 cout << "1-2 ::a = " << ::a << "\n"; // a = 88 참조 int a = 20; cout << "2-1 a = " << a << "\n"; // a = 20 참조 cout << "2-2 ::a = " << ::a << "\n"; // a = 88 참조 :: 연산자는블럭의위치 에관계없이외부변수를 참조한다. cout << "3-1 a = " << a << "\n"; // a = 30 참조 cout << "3-2 ::a = " << ::a << "\n"; // a = 88 참조 return 0; 23

Jong Hyuk Park