Upload
dolan-watkins
View
48
Download
0
Embed Size (px)
DESCRIPTION
프로그래밍 세미나. C 보다 나은 C++ I. C 보다 나은 C++ I. C 와 C++ 의 차이점 소스 파일의 확장자. CFile.c. C++File.cpp. C 컴파 일. C++ 컴파 일. CFile.obj. C++File.obj. 소스 파일의 확장자. C 보다 나은 C++ I. C 와 C++ 의 차이점 입력과 출력 함수의 변화. C 보다 나은 C++ I. C 와 C++ 의 차이점 입력과 출력 함수의 변화 출력 함수 : cout
Citation preview
프로그래밍 세미나C 보다 나은 C++ I
C 보다 나은 C++ I
C 와 C++ 의 차이점 소스 파일의 확장자
CFile.c C++File.cpp
CFile.obj C++File.obj
C 컴파일
C++ 컴파일
소스 파일의 확장자
C 보다 나은 C++ I
C 와 C++ 의 차이점 입력과 출력 함수의 변화
C 보다 나은 C++ I
C 와 C++ 의 차이점 입력과 출력 함수의 변화
출력 함수 : cout << 값 ; 입력 함수 : cin >> 값 ;
using namespace std; 를 선언하지 않으면 ? 기본 사용 함수 앞에 std:: 를 붙여야 한다 .
ex) std::cout, std::cin
#include <iostream>using namespace std; 선
언
C 보다 나은 C++ I
C 와 C++ 의 차이점 입력과 출력 함수의 기본적인 사용
형식 1
형식 2
cout << 값 ;
cout << 값 1 << 값 2 << 값 3;
형식 1
형식 2
cin >> 변수명 ;
cin >> 변수 1 >> 변수 2 >> 변수 3;
C 보다 나은 C++ I
C 방식의 참 , 거짓 0 은 거짓 (false), 1 은 참 (true)
C++ 방식의 참 거짓 기본적으로 TRUE 와 FALSE 가 키워드로 제공
#define TRUE 1#define FALSE 0
int Equal1 = TRUE;int Equal2 = FALSE;
C 보다 나은 C++ I
예제 1-1
C 보다 나은 C++ I
예제 1-1
C 보다 나은 C++ I
레퍼런스 (reference) 다른 변수의 별명 특정 변수에 별명을 만들어 그 이름으로 접근하는 것이 가능 레퍼런스 수식어인 & 를 레퍼런스에 지정 레퍼런스의 데이터형은 참조하는 변수의 데이터형과
동일해야 함
int & ref = num;
레퍼런스 수식어
레퍼런스 변수
다른 변수
ref 는 num 의 별명
C 보다 나은 C++ I
예제 1-2
C 보다 나은 C++ I
예제 1-2
C 보다 나은 C++ I
레퍼런스 (reference) 다른 변수에 대한 이름만 존재할 뿐 메모리는 할당되지 않음 레퍼런스의 주소를 구하면 참조 변수의 주소가 구해짐
10ref num
C 보다 나은 C++ I
예제 1-3
C 보다 나은 C++ I
예제 1-3
C 보다 나은 C++ I
레퍼런스 사용 시 주의사항 레퍼런스는 선언 시 반드시 초기화되어야 한다 레퍼런스의 데이터형은 참조하는 변수의 데이터형과
일치해야 한다 레퍼런스가 참조하는 대상을 바꿀 수 없다
int &ref1; // 초기화하지 않았으므로 컴파일 에러int &ref2 = 100; // 상수로 초기화했으므로 컴파일 에러
int num = 100;double &ref3 = num // 레퍼런스형이 잘못되었으므로 컴파일 에러
int x = 10, y = 20;int &ref4 = x; // ref4 는 x 의 별명ref4 = y; // x = y; 의 의미
C 보다 나은 C++ I
레퍼런스에 의한 함수 인자 전달 함수의 인자 전달 방법
값에 의한 전달 (call-by-value) 포인터에 의한 전달 (call-by-pointer) 레퍼런스에 의한 전달 (call-by-reference)
C 보다 나은 C++ I
예제 1-4
C 보다 나은 C++ I
예제 1-4
C 보다 나은 C++ I
레퍼런스에 의한 함수 인자 전달 포인터에 의한 전달 (call-by-pointer)
void main(){ … … Swap( &a , &b ); … …}
void Swap( int *x , int *y ){ int temp = *x; *x = *y; *y = temp;}
int *x = &a;
int *y = &b;
C 보다 나은 C++ I
예제 1-4
C 보다 나은 C++ I
예제 1-4
C 보다 나은 C++ I
레퍼런스에 의한 함수 인자 전달 레퍼런스에 의한 전달 (call-by-reference)
void main(){ … … Swap( a , b ); … …}
void Swap( int &x , int &y ){ int temp = x; x = y; y = temp;}
int &x = a; int &y = y;
C 보다 나은 C++ I
const 레퍼런스 const 키워드를 함께 사용하면 레퍼런스가 참조하는 값 변경
불가 읽기 전용의 접근 ( read-only access) 만 가능
int data = 100;const int &ref = data;cout << ref; // cout << data; 의 의미ref = 200; // const 레퍼런스는 변경할 수 없으므로 컴파일 에러data = 200; // data 를 직접 변경하는 것은 가능하다 .
C 보다 나은 C++ I
연습문제
C 보다 나은 C++ I
연습문제
return 값이 있으므로void 형이 아닌 dou-ble 형
C 보다 나은 C++ I
디폴트 인자 함수를 호출할 때 인자를 생략하면 디폴트 값이 자동적으로 사용 디폴트 인자를 지정할 때는 함수의 선언에 지정
void foo ( char c, int i, double d = 0.5 );
디폴트 인자
C 보다 나은 C++ I
디폴트 인자 함수를 호출할 때 인자를 생략하면 디폴트 값이 자동적으로 사용 디폴트 인자를 지정할 때는 함수의 선언에 지정
void foo(char c = ‘A’, int i = 10, double d = 0.5);void main(){ foo(); foo(‘B’); foo(‘C’, 20); foo(‘D’, 30, 1.0); }
// foo(‘A’, 10, 0.5); 이 호출된다 .// foo(‘B’, 10, 0.5); 이 호출된다 .// foo(‘C’, 20, 0.5); 이 호출된다 .// foo(‘D’, 30, 1.0); 이 호출된다 .
C 보다 나은 C++ I
예제 1-5
C 보다 나은 C++ I
예제 1-5
C 보다 나은 C++ I
예제 1-5 enum – 열거형
cout.setf(ios::showbase); cout 객체의 멤버 함수인 setf 는 출력에 대한 플래그를 설정 정수를 출력할 때 진법 정보를 함께 출력하는 기능 10 을 10 진수 = 10 10 을 8 진수 = 012 10 을 16 진수 = 0xa
cout.width(5); 출력할 값의 폭을 설정하는 기능
0 1 2
C 보다 나은 C++ I
디폴트 인자 사용 규칙 함수의 가장 오른쪽 인자부터 지정해야 한다 .
함수의 가장 오른쪽 인자부터 생략해야 한다 .
void foo(char c, int i, double);void foo(char c, int i, double d = 0.5);void foo(char c, int i = 10, double d = 0.5);void foo(char c = ‘A’, int i = 10, double d = 0.5);
void foo(char c = ‘A’, int i = 10, double d = 0.5);foo(‘A’, 20); // 세 번째 인자만 생략함foo(‘B’); // 두 번째 , 세 번째 인자만 생략함foo(); // 인자 모두를 생략함
C 보다 나은 C++ I
함수 오버로딩 이름은 같지만 인자의 개수나 데이터 형이 다른 함수를 여러
번 정의하는 기능
C 보다 나은 C++ I
함수 오버로딩 시 주의 사항 함수를 오버로딩 할 때 인자의 개수가 서로 다르거나 인자의
데이터 형이 서로 달라야 한다 .
인자의 이름만 다른 경우 인자의 시그니처 ( 인자의 개수와 데이터형 ) 은 같고 인자의 이름만
다른 경우에는 함수 오버로딩을 할 수 없다 .
int fool(int a, int b);int fool(int x, int y);fool(10, 20);
C 보다 나은 C++ I
함수 오버로딩 시 주의 사항 함수의 리턴형만 다른 경우
인자의 시그니처 ( 인자의 개수와 데이터형 ) 은 같고 리턴형만 다른 경우에는 함수 오버로딩을 할 수 없다 .
int foo2(char c, int num);void foo2(char c, int num);fool2(‘A’, 20);
C 보다 나은 C++ I
함수 오버로딩 시 주의 사항 데이터 형과 해당 형의 레퍼런스 형으로 오버로딩 된 경우
인자의 데이터 형이 특정 데이터 형과 그의 레퍼런스 형인 경우에는 함수 오버로딩을 할 수 없다 .
int foo3(int a, int b);int foo3(int &a, int &b);int x = 10, y = 20;foo3(x, y);