More actions
imported>korin0925 No edit summary |
imported>장용운 No edit summary |
||
| Line 4: | Line 4: | ||
= 미시Cpp = | = 미시Cpp = | ||
회차 : 1회차 | 회차 : 1회차 | ||
시간 : 11시 30분 ~ | 시간 : 11시 30분 ~ 2시 30분 | ||
장소 : 6층 | 장소 : 6층 | ||
| Line 12: | Line 12: | ||
| 멘토 | | 멘토 | ||
| [[장용운]] | | [[장용운]] | ||
| | | 지각 | ||
|- | |- | ||
| rowspan="3" | 멘티 | | rowspan="3" | 멘티 | ||
| [[유재범]] | | [[유재범]] | ||
| | | 출석 | ||
|- | |- | ||
| [[신형철]] | | [[신형철]] | ||
| | | 출석 | ||
|- | |- | ||
| [[김성원]] | | [[김성원]] | ||
| | | 출석 | ||
|} | |} | ||
| Line 44: | Line 44: | ||
= 스터디 진행 = | = 스터디 진행 = | ||
== 내용 == | == 내용 == | ||
# C와 C++의 차이점 | |||
* C++은 객체지향 프로그래밍 언어이다. | |||
* C는 규모적으로 C++의 subset이라고 생각하기 쉽다. | |||
* C++에서의 표준 라이브러리 헤더명은 .h로 끝나지 않는다. | |||
* 기존 C에서의 헤더를 이용하고 싶다면 <이름.h>를 <c이름>으로 선언해서 이용할 수 있다(C++호환버전). | |||
2.헤더와 include 개념 잡기 | |||
* 헤더는 다른 헤더의 include나 전처리기 매크로, 클래스나 함수 등의 declaration이 들어간다. | |||
* 외부 파일에 정의된 함수나 클래스의 declaration은 모든 파일에 필요하다. declaration이 없으면 외부에 정의된 함수나 클래스를 이용할 수 없다. | |||
* declaration이 있지만 definition이 없는 identifier는 링커에 의해 외부 링크가 이루어진다. | |||
# 네임스페이스 | |||
* 네임스페이스는 다른 팀원이 작성한 소스 코드와의 이름 충돌을 막아준다. | |||
* 네임스페이스 중괄호 블록은 같은 이름으로 다시 만들 수 있다. | |||
# std::cout, std::cin, std::endl | |||
* std::cin, std::cout은 C++에서의 표준 입출력 스트림이다. | |||
* <<연산자와 >>연산자를 이용하여 모든 기본 타입을 출력할 수 있다. | |||
* std::endl은 줄바꿈을 의미한다. | |||
# 참조형 | |||
* 참조형은 변수의 이름을 추가 정의하는 방법이다. | |||
* 참조형은 선언 시 참조할 대상을 초기화해야 한다. | |||
* 한번 대상을 지정한 참조형은 참조 대상을 바꿀 수 없다. | |||
* 참조형은 포인터보다 안전한 call-by-reference 방법이다. | |||
* 함수 파라미터로 참조형을 이용할 수 있다. | |||
* 참조형을 이용하면 값의 복사가 전혀 일어나지 않는다. | |||
# 함수 오버로딩 | |||
* C++에서는 같은 이름의 함수라도 인자의 개수나 타입이 다르다면 중복 정의할 수 있다. | |||
* 리턴 타입만 다른 경우에는 오버로딩할 수 없다. | |||
* 함수를 오버로딩할 때는 실제 호출할 때 모호성이 발생하지 않아야 한다. | |||
{| class="wikitable" | |||
|- | |||
| void func(int, int); | |||
| void func(float, float); | |||
|} | |||
||<-2> func(1, 2)는 왼쪽 함수가 호출된다 | |||
func(1.0, 2)나 func(1, 2.0)은 float가 int로 묵시적 형 변환이 일어나 왼쪽 함수가 호출된다 | |||
func(1.0, 2.0)은 모호성 에러가 발생한다 || | |||
# 디폴트 파라미터 | |||
* 함수 파라미터에 디폴트 값을 지정하면 해당 인자를 생략하여 디폴트 값을 지정할 수 있다. | |||
* 디폴트 파라미터는 가장 우측 파라미터부터 적용해야 한다. 그렇게 강제하지 않으면 어느 인자가 생략됐는지 구분할 수 없기 때문이다. | |||
* 디폴트 파라미터는 함수 프로토타입 선언을 사용할 경우 선언부에만 작성해야 한다. 정의부에서는 디폴트 값을 기술하지 않는다. | |||
* 디폴트 파라미터에 의해 생략이 가능한 함수를 오버로딩할 때는 모호성 에러를 피해야 한다. | |||
# 동적 할당 연산자 new, delete, delete[] | |||
* new 연산자를 이용하여 단일 변수나 배열을 편리하게 동적 할당할 수 있다. | |||
* 단일 변수의 해제에는 delete, 배열의 해제에는 delete[]를 이용한다. | |||
# 클래스와 인스턴스 | |||
* 클래스는 추상적 개념을 정의한 것이고 인스턴스는 그것을 구체화한 실제 변수이다. | |||
# 클래스 정의 문법 | |||
* 클래스를 정의할 땐 세미콜론을 쓴다. | |||
# 메서드 외부 정의와 헤더 | |||
* 클래스의 메서드는 클래서 정의부에 선언만 하고 외부에서 정의할 수 있다. | |||
* 보통 헤더에는 메서드 정의를 포함하지 않는다. | |||
12.(C++11)auto | |||
* auto 키워드는 수식으로부터 타입을 추론한다. | |||
* auto& 키워드는 추론된 타입의 참조형을 의미한다. | |||
# (C++11)range-based for loop | |||
* 범위 기반 for문을 이용하면 배열이나 STL 컨테이너를 편리하게 순회할 수 있다. | |||
# (C++11)std::array | |||
* std::array를 이용하면 편리하게 배열을 다룰 수 있다. | |||
== 코드 == | == 코드 == | ||
Revision as of 13:34, 17 March 2015
출발합니다 안전벨트 매시구요 식사 하고 하셨나요? 멀미가 좀 심할텐데...
미시Cpp
회차 : 1회차 시간 : 11시 30분 ~ 2시 30분 장소 : 6층
참가원
| 멘토 | 장용운 | 지각 |
| 멘티 | 유재범 | 출석 |
| 신형철 | 출석 | |
| 김성원 | 출석 |
이번에 배울 것
- C와 C++의 차이점
- 헤더와 include 개념 잡기
- 네임스페이스
- std::cout, std::cin, std::endl
- 참조형
- 함수 오버로딩
- 디폴트 파라미터
- 동적 할당 연산자 new, delete, delete[]
- 구조체와 클래스
- 클래스와 인스턴스
- 클래스 정의 문법
- 메서드 외부 정의와 헤더
- ★(C++11)auto
- ★(C++11)range-based for loop
- ★(C++11)std::array
스터디 진행
내용
- C와 C++의 차이점
- C++은 객체지향 프로그래밍 언어이다.
- C는 규모적으로 C++의 subset이라고 생각하기 쉽다.
- C++에서의 표준 라이브러리 헤더명은 .h로 끝나지 않는다.
- 기존 C에서의 헤더를 이용하고 싶다면 <이름.h>를 <c이름>으로 선언해서 이용할 수 있다(C++호환버전).
2.헤더와 include 개념 잡기
- 헤더는 다른 헤더의 include나 전처리기 매크로, 클래스나 함수 등의 declaration이 들어간다.
- 외부 파일에 정의된 함수나 클래스의 declaration은 모든 파일에 필요하다. declaration이 없으면 외부에 정의된 함수나 클래스를 이용할 수 없다.
- declaration이 있지만 definition이 없는 identifier는 링커에 의해 외부 링크가 이루어진다.
- 네임스페이스
- 네임스페이스는 다른 팀원이 작성한 소스 코드와의 이름 충돌을 막아준다.
- 네임스페이스 중괄호 블록은 같은 이름으로 다시 만들 수 있다.
- std::cout, std::cin, std::endl
- std::cin, std::cout은 C++에서의 표준 입출력 스트림이다.
- <<연산자와 >>연산자를 이용하여 모든 기본 타입을 출력할 수 있다.
- std::endl은 줄바꿈을 의미한다.
- 참조형
- 참조형은 변수의 이름을 추가 정의하는 방법이다.
- 참조형은 선언 시 참조할 대상을 초기화해야 한다.
- 한번 대상을 지정한 참조형은 참조 대상을 바꿀 수 없다.
- 참조형은 포인터보다 안전한 call-by-reference 방법이다.
- 함수 파라미터로 참조형을 이용할 수 있다.
- 참조형을 이용하면 값의 복사가 전혀 일어나지 않는다.
- 함수 오버로딩
- C++에서는 같은 이름의 함수라도 인자의 개수나 타입이 다르다면 중복 정의할 수 있다.
- 리턴 타입만 다른 경우에는 오버로딩할 수 없다.
- 함수를 오버로딩할 때는 실제 호출할 때 모호성이 발생하지 않아야 한다.
| void func(int, int); | void func(float, float); |
||<-2> func(1, 2)는 왼쪽 함수가 호출된다 func(1.0, 2)나 func(1, 2.0)은 float가 int로 묵시적 형 변환이 일어나 왼쪽 함수가 호출된다 func(1.0, 2.0)은 모호성 에러가 발생한다 ||
- 디폴트 파라미터
- 함수 파라미터에 디폴트 값을 지정하면 해당 인자를 생략하여 디폴트 값을 지정할 수 있다.
- 디폴트 파라미터는 가장 우측 파라미터부터 적용해야 한다. 그렇게 강제하지 않으면 어느 인자가 생략됐는지 구분할 수 없기 때문이다.
- 디폴트 파라미터는 함수 프로토타입 선언을 사용할 경우 선언부에만 작성해야 한다. 정의부에서는 디폴트 값을 기술하지 않는다.
- 디폴트 파라미터에 의해 생략이 가능한 함수를 오버로딩할 때는 모호성 에러를 피해야 한다.
- 동적 할당 연산자 new, delete, delete[]
- new 연산자를 이용하여 단일 변수나 배열을 편리하게 동적 할당할 수 있다.
- 단일 변수의 해제에는 delete, 배열의 해제에는 delete[]를 이용한다.
- 클래스와 인스턴스
- 클래스는 추상적 개념을 정의한 것이고 인스턴스는 그것을 구체화한 실제 변수이다.
- 클래스 정의 문법
- 클래스를 정의할 땐 세미콜론을 쓴다.
- 메서드 외부 정의와 헤더
- 클래스의 메서드는 클래서 정의부에 선언만 하고 외부에서 정의할 수 있다.
- 보통 헤더에는 메서드 정의를 포함하지 않는다.
12.(C++11)auto
- auto 키워드는 수식으로부터 타입을 추론한다.
- auto& 키워드는 추론된 타입의 참조형을 의미한다.
- (C++11)range-based for loop
- 범위 기반 for문을 이용하면 배열이나 STL 컨테이너를 편리하게 순회할 수 있다.
- (C++11)std::array
- std::array를 이용하면 편리하게 배열을 다룰 수 있다.