윤성우 저 열혈강의 C++ 프로그래밍 개정판 Chapter 01. C 언어 기반의 C++ 1.

Slides:



Advertisements
Similar presentations
비즈쿨 - 정 성 욱 - - 금오공고 비즈쿨 - 정 성 욱 1. 나는 각 단원들의 활동들에 성실하게 참여 하겠습니다. 우리의 다짐 2. 나는 나와 전체의 발전을 위해 각 멘토들의 지도에 순종하겠습니다. 3. 나는 각 단원들을 숙지함으로써 비즈니스 마인드를 함양하고 자신의.
Advertisements

노인복지론 담당교수 : 최 병태 교수님 학과 : 보건복지경영학과 학번 : 이름 : 김 태인 날짜 :
3. 자료형. 담당교수 : 이 성 우 C++ 프로그래밍 상수와 변수 (3) 1. 변수 (variable)  프로그램 수행 도중에 자료  변수를 위해 은 변하지 않음  선언 시에 반드시 그. ※ 저장 정보의 구성 ① 정보의 종류 ② 저장 값 ③ 저장 위치 int Num.
Chapter 01. C 언어 기반의 C++ 1 정충교 ). 강좌 운영 2  선수과목  컴퓨터프로그래밍 1(100811)  컴퓨터프로그래밍 2(100812)  교재  열혈 C++ 프로그래밍, 인피니티북스, 윤성우저  평가  중간 : 25%, 기말 : 35%,
3. C++와 객체지향 C++ 코딩 방법 객체 단위로 2 개의 파일 인터페이스 파일 구현파일
명품 C++ 프로그래밍 3장. 클래스와 객체.
Power C++ 제6장 포인터와 문자열.
C++ Espresso 제3장 배열과 포인터.
C++ Espresso 제3장 배열과 포인터.
미국경제의 신용위기가 한국경제에 미치는 영향
①신생아기의 신체발달 ②신생아기의 운동발달 ③신생아기의 감각기관의 발달 ☞차례. ①신생아기의 신체발달 ②신생아기의 운동발달 ③신생아기의 감각기관의 발달 ☞차례.
C++ Espresso 제1장 기초 사항.
C++ Espresso 제2장 제어문과 함수.
2014 ITA 8월 강의 C Programming -1주차- C언어 기초 정대진 ( )
강좌명 : C++프로그래밍 (C++ Programming)
Chapter 6 구조체.
제6장 객체배열과 벡터 객체 배열을 이해한다. 벡터(vector) 클래스를 사용할 수 있다.
명품 C++ 13장 예외 처리와 C 언어와의 링크 지정.
C++ Exspresso 제5장 클래스의 기초.
8. 객체와 클래스 (기본).
C++ 프로그래밍 년 2학기 전자정보공학대학 컴퓨터공학부.
C++ Espresso 제9장 다형성.
제15장 STL과 람다식 STL의 개념을 이해하고 사용할 수 있다. 람다식을 이해하고 사용할 수 있다.
Chapter 13 문자 데이터와 문자열 문자 데이터 문자열.
C++ Espresso 제6장 생성자와 소멸자.
윤성우의 열혈 C 프로그래밍 윤성우 저 열혈강의 C 프로그래밍 개정판 Chapter 02. 프로그램의 기본구성.
상속이란? - 기반클래스로부터 다른 클래스를 파생하는 법 protected란? 가상함수 (virtual function)
명품 C++ 7장 프렌드와 연산자 중복.
18장. 헤더 파일과 구현 파일 01_ 헤더 파일과 구현 파일의 사용.
14장. 함수 1 01_ 함수의 기본 02_ 인자의 전달.
C++ 프로그래밍 년 2학기 전자정보공학대학 컴퓨터공학부.
Internet Protocol and Programming
C ++ 프로그래밍 시작.
Chapter 1 C++ 기초 Copyright © 2010 Pearson Addison-Wesley. All rights reserved.
배열이란? 배열의 선언? - 배열과 포인터의 관계? 문자열이란? 문자배열 연결 리스트
스택(Stack) 김진수
17장. 문자열 01_ 문자열 사용의 기본 02_ 문자열의 사용.
명품 C++ 프로그래밍 1장. C++ 시작.
제5장 생성자와 접근제어 객체 지향 기법을 이해한다. 클래스를 작성할 수 있다. 클래스에서 객체를 생성할 수 있다.
OpenCV 설치 및 구성 OpenCV
윤성우의 열혈 C 프로그래밍 윤성우 저 열혈강의 C 프로그래밍 개정판 Chapter 11. 1차원 배열.
타입, 연산자 Chapter 5, 6 Kum Deuk Kyu , Ph. D. Spring 2015
가상함수와 추상 클래스.
11장. 1차원 배열 IT응용시스템공학과 김 형 진 교수.
Chapter 1 C와는 다른 C++. 최호성.
객체 지향 프로그램(C++)을 위장한 절차식(C) 패러다임 자동 식별화 구축 (Constructing an Automatic system for identifying the facked Procedural-Oriented Paradigm(C) within Object-Oriented.
제2장 제어구조와 배열 if-else 문에 대하여 학습한다. 중첩 if-else 문에 대하여 학습한다.
칼빈의 생애와 개혁자로의 변모 사학과 김종식.
4. 고급변수 사용 : 포인터와 관련하여 메모리 바라보기
Internet Protocol and Programming
국제의료관광 관련 법, 제도.
윤성우의 열혈 C 프로그래밍 윤성우 저 열혈강의 C 프로그래밍 개정판 Chapter 09. C언어의 핵심! 함수!
Fflush 사용이유 및 방법 [이유] 키보드에서 입력된 내용은 입력버퍼에 저장되었다가 Enter 키가 들어오면 프로그램으로 전달됨 이 때 입력버퍼에 있는 Enter 키도 프로그램으로 전달됨 그러므로 아래와 같은 프로그램에서 문자 하나를 입력해도 Enter키도 입력된 것으로.
루프와 카운트 Looping and counting
문자열 처리하기 working with Strings
멤버 함수인 operator+()가 실행, 또는 전역 함수인 operator+()가 실행 Point p3 = p1+p2; 에서
제8장 포인터와 동적객체 생성 포인터의 개념을 이해한다. 포인터와 관련된 연산을 이해한다.
C-언어와 기반구조 정보보호학과 이정수 교수.
5. 논리적 자료표현 : 구조체.
남아메리카 선교 김수정, 이하정 전희진, 장성경.
누구나 즐기는 C언어 콘서트 제2장 기초 사항 IT응용시스템공학과 김형진 교수.
3장,4장 발표 서정우.
C++ Espresso 제13장 입출력과 파일처리.
CHAPTER 9-1 한국의 사회복지정책 - 사회보험제도 -
포인터와 배열 조 병 규 한 국 교 통 대 학 교 SQ Lab..
Chapter 2 C++ 함수와 네임스페이스. 최호성.
Internet Protocol and Programming
엔화 대환/대출 자금용도 대상 이자 차액 효과 (A,B,C) 환율 리스크 헷징 (A,B) 엔화의 평균환율 (A,B,C)
C.
경찰학 세미나 제 5 강 경찰관직무집행법 2조 5호의 의미 신라대학교 법경찰학부 김순석.
Presentation transcript:

윤성우 저 열혈강의 C++ 프로그래밍 개정판 Chapter 01. C 언어 기반의 C++ 1

Chapter printf 와 scanf 를 대신하는 입출력 방식 윤성우 저 열혈강의 C++ 프로그래밍 개정판

C++ 버전의 Hello World 출력 프로그램  헤더파일의 선언 #include  출력의 기본구성 std::cout<<‘ 출력대상 1’<<‘ 출력대상 2’<<‘ 출력대상 3’;  개행의 진행 std::endl 을 출력하면 개행이 이뤄진다. 예제를 이해하려 들지 말고 관찰하자. 그리고 위의 세 가지 사실을 확인하자. 예제를 통해서 확인할 사실 몇 가지 실행결과 C 언어에서는 출력의 대상에 따라 서식지정을 달 리했지만, C++ 에서는 그러한 과정이 불필요하다.

scanf 를 대신하는 데이터의 입력  입력의 기본구성 std::cin>>’ 변수 ’  변수의 선언위치함수의 중간 부분에서도 변수의 선언이 가능하다. 예제를 통해서 확인할 사실 몇 가지 출력에서와 마찬가지로 입력에서도 별도의 서식 지정이 불필요하다. C++ 에서는 변수의 선언위치에 제한을 두지 않는다. 실행결과

C++ 의 지역변수 선언 이렇듯 연이은 데이터의 입력을 명령할 수 있다. for 문 안에서도 변수의 선언이 가능하다. std::cin 을 통해서 입력되는 데이터의 구분은 스페이스 바, 엔터, 탭과 같은 공백을 통해서 이뤄 진다. 실행결과

배열 기반의 문자열 입출력 실행결과 문자열의 입력방식도 다른 데이터 의 입력방식과 큰 차이가 나지 않 는다.

Chapter 함수 오버로딩 (Function Overloading) 윤성우 저 열혈강의 C++ 프로그래밍 개정판

함수 오버로딩의 이해 C++ 은 함수호출 시 ‘ 함수의 이름 ’ 과 ‘ 전달되는 인자의 정보 ’ 를 동시에 참조하여 호출할 함수를 결정한다. 따라 서 이렇듯 매개변수의 선언이 다르다면 동일한 이름의 함수도 정의 가능하다. 그리고 이러한 형태의 함수정의 를 가리켜 ‘ 함수 오버로딩 (Function Overloading)’ 이라 한다.

함수 오버로딩의 예 매개변수의 자료형이 다르므로 함수 오버로딩 성립 매개변수의 수가 다르므로 함수 오버로딩 성립 반환형의 차이는 함수 오버로딩 의 조건을 만족시키지 않는다.

Chapter 매개변수의 디폴트 값 윤성우 저 열혈강의 C++ 프로그래밍 개정판

매개변수에 설정하는 ‘ 디폴트 값 ’ 의 의미 인자를 전달하지 않으면 7 이 전달된 것으로 간주한다. 여기서의 디폴트 값은 7! 따라서 이 함수를 대상으로 하는 다음 두 함수의 호출은 그 결과가 같다. MyFuncOne( ); MyFuncOne(7); 인자를 전달하지 않으면 각각 5 와 7 이 전달된 것으로 간주한다. 따라서 이 함수를 대상으로 하는 다음 두 함수의 호출은 그 결과 가 같다. MyFuncTwo( ); MyFuncTwo(5, 7);

디폴트 값은 함수의 선언에만 위치 함수의 선언을 별도로 둘 때에는 디폴트 값의 선언을 함수의 선 언부에 위치시켜야 한다. 그 이유는 컴파일러의 컴파일 특성에 서 찾을 수 있다. 컴파일러는 함수의 디폴트 값의 지정여부를 알아야 함수의 호출 문장을 적절히 컴파일 할 수 있다.

부분적 디폴트 값 설정 전달되는 인자가 왼쪽에서부터 채워지므로, 디폴트 값은 오른쪽에서부터 채워져야 한다. 전달되는 인자가 왼쪽에서부터 채워지므로, 오른쪽이 빈 상태로 왼쪽의 매개변수에만 일부 채워 진 디폴트 값은 의미를 갖지 못한다. 따라서 컴파일 에러를 일으킨다. 매개변수의 일부에만 디폴트 값을 지정 하고, 채워지지 않은 매개변수에만 인자 를 전달하는 것이 가능하다.

Chapter 인라인 (inline) 함수 윤성우 저 열혈강의 C++ 프로그래밍 개정판

매크로 함수의 장점과 함수의 inline 선언 선행처리 결과 정점. 함수가 인라인화 되어 성능의 향상으로 이어질 수 있다. 단점. 함수의 정의 방식이 일반함수에 비해서 복잡하다. 따라서 복잡한 함수의 정의에는 한계가 있다. 매크로 함수의 정점은 취하고 단점은 보완한 것이 C++ 의 인라인 함수이다. 실행결과 키워드 inline 선언은 컴파일러에 의해서 처리된다. 따라서 컴 파일러가 함수의 인라인화를 결정한다. inline 선언이 되어도 인라인처리 되지 않을 수 있고, inline 선 언이 없어도 인라인처리 될 수 있다.

인라인 함수에는 없는 매크로 함수만의 장점 매크로 함수는 자료형에 독립적이다. inline 선언된 함수를 위의 형태로 호출하려면, 각 자료형 별로 함수가 오버로딩 되어야 한다. 즉, 매크로 함수와 달리 자료형에 독립적이지 못하다. inline 함수를 자료형에 독립적으로 선언하는 방법 ! 이는 이후에 템플릿을 통해서 학습하게 된다.

Chapter 이름공간에 대한 소개 윤성우 저 열혈강의 C++ 프로그래밍 개정판

이름공간의 기본원리 BestComImpl 이라는 이름의 공간 ProgComImpl 이라는 이름의 공간 존재하는 이름공간이 다르면 동일 한 이름의 함수 및 변수를 선언하 는 것이 가능하다. 이름공간 BestComImpl 에 정의된 SimpleFunc 의 호출 이름공간 ProgComImpl 에 정의된 SimpleFunc 의 호출 프로젝트의 진행에 있어서 발생할 수 있는 이 름의 충돌을 막을 목적으로 존재하는 것이 이 름공간이다. 범위 지정 연산자

이름공간 기반의 함수 선언과 정의의 분리 이름공간 BestComImpl 에 위치하는 함수 SimpleFunc 의 선언과 정의의 분리 이름공간 ProgComImpl 에 위치하는 함수 SimpleFunc 의 선언과 정의의 분리

동일한 이름공간 내에서의 함수호출 선언된 이름공간의 이름이 동일하다면, 이 둘은 동일한 이름공간으로 간주한다. 즉, SimpleFunc 와 PrettyFunc 는 동일한 이름 공간안에 존재하는 상황이다. 이름공간을 명시하지 않고 함수를 호출하면, 함수의 호출문이 존재하는 함수와 동일한 이름 공간 안에서 호출할 함수를 찾게 된다. 따라서 SimpleFunc 함수 내에서는 이름공간을 명시 하지 않은 상태에서 PrettyFunc 함수를 직접 호출 할 수 있다.

이름공간의 중첩 이름공간 Parent 이름공간 Parent::SubOne 이름공간 Parent::SubTwo Parent::SubOne::num Parent::num Parent::SubTwo::num 이름공간은 중첩이 가능하다. 따라서 계층적 구조를 갖게끔 이름공간을 구성할 수 있다.

std::cout, std::cin, std::endl 에 선언되어 있는 cout, cin 그리고 endl 은 이름공간 std 안에 선언되어 있다. 이렇듯 이름충돌을 막기 위해서, C++ 표준에서 제공하는 다양한 요소들은 이름공간 std 안에 선언되어 있다.

using 을 이용한 이름공간의 명시 이후부터 cin, cout, endl 은 std::cin, std::cout, std::endl 을 의미한다는 선언 이름공간 std 에 선언된 것은 std 라는 이름공간의 선언없이 접근하겠다는 선언 너무 빈번한 using namespace 의 선언은 이름의 충돌을 막기위한 이름공간 의 선언을 의미 없게 만든다. 따라서 제한적으로 사용할 필요가 있다.

이름공간의 별칭 지정과 전역변수의 접근 AAA::BBB::CCC 에 대해 ABC 라는 이름의 별칭 선언 후, 위와 같이 하나의 별칭으로 이름공간의 선언을 대신할 수 있다. 범위지정 연산자는 지역변수가 아닌 전역변수의 접근에도 사용이 가능하다.

Chapter 01 이 끝났습니다. 질문 있으신 지요 ?