1 / 35

프로그래밍 세미나

프로그래밍 세미나. 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 << 값 ;

Download Presentation

프로그래밍 세미나

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 프로그래밍 세미나 C보다 나은 C++ I

  2. C보다 나은 C++ I • C와 C++의 차이점 • 소스 파일의 확장자 CFile.c C++File.cpp C 컴파일 C++ 컴파일 CFile.obj C++File.obj 소스 파일의 확장자

  3. C보다 나은 C++ I • C와 C++의 차이점 • 입력과 출력 함수의 변화

  4. C보다 나은 C++ I • C와 C++의 차이점 • 입력과 출력 함수의 변화 • 출력 함수 : cout << 값; • 입력 함수 : cin >> 값; • using namespace std; 를 선언하지 않으면? • 기본 사용 함수 앞에 std:: 를 붙여야 한다. • ex) std::cout, std::cin #include <iostream> using namespace std; 선언

  5. C보다 나은 C++ I • C와 C++의 차이점 • 입력과 출력 함수의 기본적인 사용 cout<< 값; 형식 1 cout<< 값1 << 값2 << 값3; 형식 2 cin >> 변수명; 형식 1 cin >> 변수1 >> 변수2 >> 변수3; 형식 2

  6. C보다 나은 C++ I • C 방식의 참, 거짓 • 0은 거짓(false), 1은 참(true) • C++ 방식의 참 거짓 • 기본적으로 TRUE와 FALSE가 키워드로 제공 #define TRUE 1 #define FALSE 0 int Equal1 = TRUE; int Equal2 = FALSE;

  7. C보다 나은 C++ I • 예제 1-1

  8. C보다 나은 C++ I • 예제 1-1

  9. C보다 나은 C++ I • 레퍼런스(reference) • 다른 변수의 별명 • 특정 변수에 별명을 만들어 그 이름으로 접근하는 것이 가능 • 레퍼런스 수식어인 & 를 레퍼런스에 지정 • 레퍼런스의데이터형은 참조하는 변수의 데이터형과 동일해야 함 int & ref = num; ref 는 num의 별명 레퍼런스 변수 다른 변수 레퍼런스 수식어

  10. C보다 나은 C++ I • 예제 1-2

  11. C보다 나은 C++ I • 예제 1-2

  12. C보다 나은 C++ I • 레퍼런스(reference) • 다른변수에 대한 이름만 존재할 뿐 메모리는 할당되지 않음 • 레퍼런스의 주소를 구하면 참조 변수의 주소가 구해짐 10 ref num

  13. C보다 나은 C++ I • 예제 1-3

  14. C보다 나은 C++ I • 예제 1-3

  15. 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; 의 의미

  16. C보다 나은 C++ I • 레퍼런스에 의한 함수 인자 전달 • 함수의 인자 전달 방법 • 값에 의한 전달(call-by-value) • 포인터에 의한 전달(call-by-pointer) • 레퍼런스에 의한 전달(call-by-reference)

  17. C보다 나은 C++ I • 예제 1-4

  18. C보다 나은 C++ I • 예제 1-4

  19. C보다 나은 C++ I • 레퍼런스에 의한 함수 인자 전달 • 포인터에 의한 전달(call-by-pointer) void main() { … … Swap( &a , &b ); … … } int *x = &a; int *y = &b; void Swap( int *x , int *y ) { int temp = *x; *x = *y; *y = temp; }

  20. C보다 나은 C++ I • 예제 1-4

  21. C보다 나은 C++ I • 예제 1-4

  22. C보다 나은 C++ I • 레퍼런스에 의한 함수 인자 전달 • 레퍼런스에 의한 전달(call-by-reference) void main() { … … Swap( a , b ); … … } int &x = a; int &y = y; void Swap( int &x , int &y ) { int temp = x; x = y; y = temp; }

  23. 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를 직접 변경하는 것은 가능하다.

  24. C보다 나은 C++ I • 연습문제

  25. C보다 나은 C++ I • 연습문제 return 값이 있으므로 void형이 아닌 double형

  26. C보다 나은 C++ I • 디폴트 인자 • 함수를 호출할 때 인자를 생략하면 디폴트 값이 자동적으로 사용 • 디폴트 인자를 지정할 때는 함수의 선언에 지정 voidfoo ( char c, inti, double d = 0.5 ); 디폴트 인자

  27. C보다 나은 C++ I • 디폴트 인자 • 함수를 호출할 때 인자를 생략하면 디폴트 값이 자동적으로 사용 • 디폴트 인자를 지정할 때는 함수의 선언에 지정 void foo(char c = ‘A’, inti = 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); 이 호출된다.

  28. C보다 나은 C++ I • 예제 1-5

  29. C보다 나은 C++ I • 예제 1-5

  30. 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

  31. C보다 나은 C++ I • 디폴트 인자 사용 규칙 • 함수의 가장 오른쪽 인자부터 지정해야 한다. • 함수의 가장 오른쪽 인자부터 생략해야 한다. void foo(char c, inti, double); void foo(char c, inti, double d = 0.5); void foo(char c, inti = 10, double d = 0.5); void foo(char c = ‘A’, inti = 10, double d = 0.5); void foo(char c = ‘A’, inti = 10, double d = 0.5); foo(‘A’, 20); // 세 번째 인자만 생략함 foo(‘B’); // 두 번째, 세 번째 인자만 생략함 foo(); // 인자 모두를 생략함

  32. C보다 나은 C++ I • 함수 오버로딩 • 이름은 같지만 인자의 개수나 데이터 형이 다른 함수를 여러 번 정의하는 기능

  33. C보다 나은 C++ I • 함수 오버로딩 시 주의 사항 • 함수를 오버로딩 할 때 인자의 개수가 서로 다르거나 인자의 데이터 형이 서로 달라야 한다. • 인자의 이름만 다른 경우 • 인자의 시그니처(인자의 개수와 데이터형)은 같고 인자의 이름만 다른 경우에는 함수 오버로딩을 할 수 없다. int fool(int a, int b); int fool(int x, int y); fool(10, 20);

  34. C보다 나은 C++ I • 함수 오버로딩 시 주의 사항 • 함수의 리턴형만 다른 경우 • 인자의 시그니처(인자의 개수와 데이터형)은 같고 리턴형만 다른 경우에는 함수 오버로딩을 할 수 없다. int foo2(char c, int num); void foo2(char c, int num); fool2(‘A’, 20);

  35. C보다 나은 C++ I • 함수 오버로딩 시 주의 사항 • 데이터 형과 해당 형의 레퍼런스 형으로 오버로딩 된 경우 • 인자의 데이터 형이 특정 데이터 형과 그의 레퍼런스 형인 경우에는 함수 오버로딩을 할 수 없다. int foo3(inta, int b); int foo3(int &a, int &b); int x = 10, y = 20; foo3(x, y);

More Related