SlideShare a Scribd company logo
1 of 12
EC++ C 1,2 Surmary
NHN NEXT 남세현
C++은 이렇게 구성되어 있다
• C
– C++의 기반은 C언어.
• C++ of Objective
– „클래스‟, 그리고 그것의 특징들(캡슐, 상속…)
• C++ of Templete
• STL
#define 대신에 쓸 수 있는 것들
• 단순한 상수를 쓸 때는
– const
• const char* const name = “namse”
– enum
• 함수같은 매크로를 만들고 싶을땐
– inline
const
• Const 멤버변수를 정의할 때
• .h -> static const double A;
• .cpp -> MyClass::A = 1.35;
• 상수 포인터, 상수 데이터
• 상수 포인터 : 포인터 자체가 상수
• 상수 데이터 : 포인터가 가르키는 대상이 상수
Char *name = myName;
비상수
포인터
비상수
데이터
Const Char *name = myName; 비상수p 상수d
Char * const name = myName; 상수p 비상수d
Const Char * const name = myName; 상수p 상수d
const
• Const std::~::iterator iter;
– Iter가 상수. *iter는 상수 아님.
• Std::~::const_iterator iter;
– Iter는 비상수, *iter는 상수!
• 상수 함수
– Void function() const { blah blah;}
– 데이터 멤버 터치 X ( static 빼고!)
– 음… 몇 개는 적당히 터치해도 되지 않을까?
• Mutable. ( mutable int size; )
const
• 상수 함수
– 비상수 함수 코드를 컨시브이 해야하는가?
– Const_cast, static_cast를 이용할 것!
– char& func() {
return
const_cast<char&>(
static_cast<const MyClass&>
(*this)->func()
);
}
초기화
• 생성자에서 값을 다 넣어주는 것?
– I::I(){ name = “namese”; }
– 이건 초기화가 아님! 대입임!
• 멤버 초기화 리스트를 사용하자!
– I::I():name(“Namse”) {}
• 왜죠?
– C++이잖아…
C++이 자동 생성하는 함수
• Class MyClass{};
– MyClass()
– MyClass(const MyClass& rhs) {…}
– ~MyClass() {…}
– MyClass& operator=(const MyClass& rhs) {..}
• C++이 만든 함수가 당신이 만든 객체에 어울
리는지 잘 판단해야 합니다!
– 그 함수들을 사용해선 안된다고 판단된다면?
– private 멤버로 선언하고
일부러 정의(구현)하지 마세요!
C++이 자동 생성하는 함수
• Class MyClass{};
– ~MyClass() {…}
• 다형성을 사용해야 할 경우엔
– 소멸자를 항상 virtual로 선언하자
– 왜?
– 파생 클래스의
모든걸 지우지 못할 수 있으니까!
C++이 자동 생성하는 함수
• Class MyClass{};
– ~MyClass() {…}
• 소멸자에서 예외가 나온다고?
– 예외가 나올 수 있는 소멸자는 시한폭탄!
• Try, chtch문을 소멸자에 사용하여
예외를 다 처리하거나,
• 프로그램을 아예 끝내버리거나…
• 예외는 오직 보통의 함수에서 나오도록!
C++이 자동 생성하는 함수
• Class MyClass{};
– MyClass(){…}
– ~MyClass() {…}
• 파생 클래스 생성자는 기본 클래스 생성자를 실행
한다.
– 그때, 기본 클래스 생성자에서 실행되는 가상함수
– 당연히 파생 클래스꺼로 실행되겠지^^
– 하지만, 기본 클래스의 함수가 실행된다.
– 기본 클래스의 생성자가 호출될 동안에는 가상 함수는
절대로 파생 클래스 쪽으로 내려가지 않는다.
• 생성자, 소멸자 안에서는
가상 함수 호출 하지 마세요!
C++이 자동 생성하는 함수
• Class MyClass{};
– MyClass& operator(const MyClass& rhs){…}
• int x,y,z; x = y= z = 15;
– 이게 관례잖아? 그러면 나의 클래스도…
• 대입 연산자에선 *this를 반환하게 하자!
X = ( Y = ( Z = 15 ) );
mc = mc1 = mc2 = new MyClass(25);
mc = ( mc1 = ( mc2= new My class(25) ) );

More Related Content

What's hot

자바스크립트.
자바스크립트.자바스크립트.
자바스크립트.Deoc Jin
 
Effective c++ 챕터 2 정리
Effective c++ 챕터 2 정리Effective c++ 챕터 2 정리
Effective c++ 챕터 2 정리연우 김
 
여러 생성자
여러 생성자여러 생성자
여러 생성자. Ruvendix
 
More Effective C++ 4주차
More Effective C++ 4주차More Effective C++ 4주차
More Effective C++ 4주차Injae Lee
 
클래스의 추가 지식
클래스의 추가 지식클래스의 추가 지식
클래스의 추가 지식. Ruvendix
 
모어이펙티브 C++ 3,4장 예외, 효율 스터디
모어이펙티브 C++ 3,4장 예외, 효율 스터디모어이펙티브 C++ 3,4장 예외, 효율 스터디
모어이펙티브 C++ 3,4장 예외, 효율 스터디quxn6
 
Secure coding-c-preprocessor-3
Secure coding-c-preprocessor-3Secure coding-c-preprocessor-3
Secure coding-c-preprocessor-3Seungyong Lee
 
자바와 사용하기2
자바와 사용하기2자바와 사용하기2
자바와 사용하기2destinycs
 
[Swift] Methods
[Swift] Methods[Swift] Methods
[Swift] MethodsBill Kim
 
More effective c++ 항목30부터
More effective c++ 항목30부터More effective c++ 항목30부터
More effective c++ 항목30부터Dong Chan Shin
 
Effective c++ chapter 1,2 요약
Effective c++ chapter 1,2 요약Effective c++ chapter 1,2 요약
Effective c++ chapter 1,2 요약Nam Hyeonuk
 
Google coding guide
Google coding guideGoogle coding guide
Google coding guide. Ruvendix
 
M5 6 1
M5 6 1M5 6 1
M5 6 1nexthw
 
[C++ Korea] Effective Modern C++ Study item14 16 +신촌
[C++ Korea] Effective Modern C++ Study item14 16 +신촌[C++ Korea] Effective Modern C++ Study item14 16 +신촌
[C++ Korea] Effective Modern C++ Study item14 16 +신촌Seok-joon Yun
 
알고리즘 연합캠프 세미나 3-C (C++11 and ETC)
알고리즘 연합캠프 세미나 3-C (C++11 and ETC)알고리즘 연합캠프 세미나 3-C (C++11 and ETC)
알고리즘 연합캠프 세미나 3-C (C++11 and ETC)HYUNJEONG KIM
 
[KOSSA] C++ Programming - 13th Study - exception handling
[KOSSA] C++ Programming - 13th Study - exception handling[KOSSA] C++ Programming - 13th Study - exception handling
[KOSSA] C++ Programming - 13th Study - exception handlingSeok-joon Yun
 
호이스팅, 클로저, IIFE
호이스팅, 클로저, IIFE호이스팅, 클로저, IIFE
호이스팅, 클로저, IIFEChangHyeon Bae
 
C Language For Arduino
C Language For ArduinoC Language For Arduino
C Language For Arduino영욱 김
 
Objective-C에서 Swift로 전향할 때 생각해 볼 거리들
Objective-C에서 Swift로 전향할 때 생각해 볼 거리들Objective-C에서 Swift로 전향할 때 생각해 볼 거리들
Objective-C에서 Swift로 전향할 때 생각해 볼 거리들SeongGyu Jo
 
[명우니닷컴] 2번째 숙제 - 두 정수의 연산 (공연 예약 시스템)
[명우니닷컴] 2번째 숙제 - 두 정수의 연산 (공연 예약 시스템)[명우니닷컴] 2번째 숙제 - 두 정수의 연산 (공연 예약 시스템)
[명우니닷컴] 2번째 숙제 - 두 정수의 연산 (공연 예약 시스템)Myeongun Ryu
 

What's hot (20)

자바스크립트.
자바스크립트.자바스크립트.
자바스크립트.
 
Effective c++ 챕터 2 정리
Effective c++ 챕터 2 정리Effective c++ 챕터 2 정리
Effective c++ 챕터 2 정리
 
여러 생성자
여러 생성자여러 생성자
여러 생성자
 
More Effective C++ 4주차
More Effective C++ 4주차More Effective C++ 4주차
More Effective C++ 4주차
 
클래스의 추가 지식
클래스의 추가 지식클래스의 추가 지식
클래스의 추가 지식
 
모어이펙티브 C++ 3,4장 예외, 효율 스터디
모어이펙티브 C++ 3,4장 예외, 효율 스터디모어이펙티브 C++ 3,4장 예외, 효율 스터디
모어이펙티브 C++ 3,4장 예외, 효율 스터디
 
Secure coding-c-preprocessor-3
Secure coding-c-preprocessor-3Secure coding-c-preprocessor-3
Secure coding-c-preprocessor-3
 
자바와 사용하기2
자바와 사용하기2자바와 사용하기2
자바와 사용하기2
 
[Swift] Methods
[Swift] Methods[Swift] Methods
[Swift] Methods
 
More effective c++ 항목30부터
More effective c++ 항목30부터More effective c++ 항목30부터
More effective c++ 항목30부터
 
Effective c++ chapter 1,2 요약
Effective c++ chapter 1,2 요약Effective c++ chapter 1,2 요약
Effective c++ chapter 1,2 요약
 
Google coding guide
Google coding guideGoogle coding guide
Google coding guide
 
M5 6 1
M5 6 1M5 6 1
M5 6 1
 
[C++ Korea] Effective Modern C++ Study item14 16 +신촌
[C++ Korea] Effective Modern C++ Study item14 16 +신촌[C++ Korea] Effective Modern C++ Study item14 16 +신촌
[C++ Korea] Effective Modern C++ Study item14 16 +신촌
 
알고리즘 연합캠프 세미나 3-C (C++11 and ETC)
알고리즘 연합캠프 세미나 3-C (C++11 and ETC)알고리즘 연합캠프 세미나 3-C (C++11 and ETC)
알고리즘 연합캠프 세미나 3-C (C++11 and ETC)
 
[KOSSA] C++ Programming - 13th Study - exception handling
[KOSSA] C++ Programming - 13th Study - exception handling[KOSSA] C++ Programming - 13th Study - exception handling
[KOSSA] C++ Programming - 13th Study - exception handling
 
호이스팅, 클로저, IIFE
호이스팅, 클로저, IIFE호이스팅, 클로저, IIFE
호이스팅, 클로저, IIFE
 
C Language For Arduino
C Language For ArduinoC Language For Arduino
C Language For Arduino
 
Objective-C에서 Swift로 전향할 때 생각해 볼 거리들
Objective-C에서 Swift로 전향할 때 생각해 볼 거리들Objective-C에서 Swift로 전향할 때 생각해 볼 거리들
Objective-C에서 Swift로 전향할 때 생각해 볼 거리들
 
[명우니닷컴] 2번째 숙제 - 두 정수의 연산 (공연 예약 시스템)
[명우니닷컴] 2번째 숙제 - 두 정수의 연산 (공연 예약 시스템)[명우니닷컴] 2번째 숙제 - 두 정수의 연산 (공연 예약 시스템)
[명우니닷컴] 2번째 숙제 - 두 정수의 연산 (공연 예약 시스템)
 

Viewers also liked

Game programing gems 1.11
Game programing gems 1.11Game programing gems 1.11
Game programing gems 1.11Sehyeon Nam
 
[GPG 스터디] 1.6 범용 핸들 기반 자원 관리자
[GPG 스터디] 1.6 범용 핸들 기반 자원 관리자 [GPG 스터디] 1.6 범용 핸들 기반 자원 관리자
[GPG 스터디] 1.6 범용 핸들 기반 자원 관리자 Sehyeon Nam
 
[GPG 스터디] 1.3 자동적인 단일체 유틸리티
[GPG 스터디] 1.3 자동적인 단일체 유틸리티[GPG 스터디] 1.3 자동적인 단일체 유틸리티
[GPG 스터디] 1.3 자동적인 단일체 유틸리티Sehyeon Nam
 
Ec++ 3,4 summary
Ec++ 3,4 summaryEc++ 3,4 summary
Ec++ 3,4 summarySehyeon Nam
 
[GPG 스터디] 1.2 템플릿 메타프로그래밍을 이용한 빠른 수학 연산
[GPG 스터디] 1.2 템플릿 메타프로그래밍을 이용한 빠른 수학 연산 [GPG 스터디] 1.2 템플릿 메타프로그래밍을 이용한 빠른 수학 연산
[GPG 스터디] 1.2 템플릿 메타프로그래밍을 이용한 빠른 수학 연산 Sehyeon Nam
 
[GPG 스터디] 1.1 객체지향적 프로그래밍과 설계기법
[GPG 스터디] 1.1 객체지향적 프로그래밍과 설계기법[GPG 스터디] 1.1 객체지향적 프로그래밍과 설계기법
[GPG 스터디] 1.1 객체지향적 프로그래밍과 설계기법Sehyeon Nam
 
Game programing gems 4.17
Game programing gems 4.17Game programing gems 4.17
Game programing gems 4.17Sehyeon Nam
 
[GPG 스터디] 1.4 게임프로그래밍에서의 STL 활용
[GPG 스터디] 1.4 게임프로그래밍에서의 STL 활용 [GPG 스터디] 1.4 게임프로그래밍에서의 STL 활용
[GPG 스터디] 1.4 게임프로그래밍에서의 STL 활용 Sehyeon Nam
 
Get into game programming
Get into game programmingGet into game programming
Get into game programmingAndrew Fray
 
GPG 1.2 템플릿 메타프로그래밍을 이용한 빠른 수학 연산
GPG 1.2 템플릿 메타프로그래밍을 이용한 빠른 수학 연산GPG 1.2 템플릿 메타프로그래밍을 이용한 빠른 수학 연산
GPG 1.2 템플릿 메타프로그래밍을 이용한 빠른 수학 연산Taeung Ra
 
[GPG스터디] 1.0 데이터 주도적 설계의 마법
[GPG스터디] 1.0 데이터 주도적 설계의 마법[GPG스터디] 1.0 데이터 주도적 설계의 마법
[GPG스터디] 1.0 데이터 주도적 설계의 마법Sehyeon Nam
 

Viewers also liked (12)

Game programing gems 1.11
Game programing gems 1.11Game programing gems 1.11
Game programing gems 1.11
 
D2 ppt
D2 pptD2 ppt
D2 ppt
 
[GPG 스터디] 1.6 범용 핸들 기반 자원 관리자
[GPG 스터디] 1.6 범용 핸들 기반 자원 관리자 [GPG 스터디] 1.6 범용 핸들 기반 자원 관리자
[GPG 스터디] 1.6 범용 핸들 기반 자원 관리자
 
[GPG 스터디] 1.3 자동적인 단일체 유틸리티
[GPG 스터디] 1.3 자동적인 단일체 유틸리티[GPG 스터디] 1.3 자동적인 단일체 유틸리티
[GPG 스터디] 1.3 자동적인 단일체 유틸리티
 
Ec++ 3,4 summary
Ec++ 3,4 summaryEc++ 3,4 summary
Ec++ 3,4 summary
 
[GPG 스터디] 1.2 템플릿 메타프로그래밍을 이용한 빠른 수학 연산
[GPG 스터디] 1.2 템플릿 메타프로그래밍을 이용한 빠른 수학 연산 [GPG 스터디] 1.2 템플릿 메타프로그래밍을 이용한 빠른 수학 연산
[GPG 스터디] 1.2 템플릿 메타프로그래밍을 이용한 빠른 수학 연산
 
[GPG 스터디] 1.1 객체지향적 프로그래밍과 설계기법
[GPG 스터디] 1.1 객체지향적 프로그래밍과 설계기법[GPG 스터디] 1.1 객체지향적 프로그래밍과 설계기법
[GPG 스터디] 1.1 객체지향적 프로그래밍과 설계기법
 
Game programing gems 4.17
Game programing gems 4.17Game programing gems 4.17
Game programing gems 4.17
 
[GPG 스터디] 1.4 게임프로그래밍에서의 STL 활용
[GPG 스터디] 1.4 게임프로그래밍에서의 STL 활용 [GPG 스터디] 1.4 게임프로그래밍에서의 STL 활용
[GPG 스터디] 1.4 게임프로그래밍에서의 STL 활용
 
Get into game programming
Get into game programmingGet into game programming
Get into game programming
 
GPG 1.2 템플릿 메타프로그래밍을 이용한 빠른 수학 연산
GPG 1.2 템플릿 메타프로그래밍을 이용한 빠른 수학 연산GPG 1.2 템플릿 메타프로그래밍을 이용한 빠른 수학 연산
GPG 1.2 템플릿 메타프로그래밍을 이용한 빠른 수학 연산
 
[GPG스터디] 1.0 데이터 주도적 설계의 마법
[GPG스터디] 1.0 데이터 주도적 설계의 마법[GPG스터디] 1.0 데이터 주도적 설계의 마법
[GPG스터디] 1.0 데이터 주도적 설계의 마법
 

Similar to Ec++ c 1,2 surmary

A tour of C++ : the basics
A tour of C++ : the basicsA tour of C++ : the basics
A tour of C++ : the basicsJaewon Choi
 
스위프트 성능 이해하기
스위프트 성능 이해하기스위프트 성능 이해하기
스위프트 성능 이해하기Yongha Yoo
 
Effective c++ 1
Effective c++ 1Effective c++ 1
Effective c++ 1현찬 양
 
Effective c++ chapter1 2_dcshin
Effective c++ chapter1 2_dcshinEffective c++ chapter1 2_dcshin
Effective c++ chapter1 2_dcshinDong Chan Shin
 
[C++ Korea 2nd Seminar] C++17 Key Features Summary
[C++ Korea 2nd Seminar] C++17 Key Features Summary[C++ Korea 2nd Seminar] C++17 Key Features Summary
[C++ Korea 2nd Seminar] C++17 Key Features SummaryChris Ohk
 
Modern C++의 타입 추론과 람다, 컨셉
Modern C++의 타입 추론과 람다, 컨셉Modern C++의 타입 추론과 람다, 컨셉
Modern C++의 타입 추론과 람다, 컨셉HyunJoon Park
 
Effective c++ chapter7_8_9_dcshin
Effective c++ chapter7_8_9_dcshinEffective c++ chapter7_8_9_dcshin
Effective c++ chapter7_8_9_dcshinDong Chan Shin
 
2013 C++ Study For Students #1
2013 C++ Study For Students #12013 C++ Study For Students #1
2013 C++ Study For Students #1Chris Ohk
 
NHNNEXT 개경프14 Subway Rocket Team Study 3rd C++
NHNNEXT 개경프14 Subway Rocket Team Study 3rd C++NHNNEXT 개경프14 Subway Rocket Team Study 3rd C++
NHNNEXT 개경프14 Subway Rocket Team Study 3rd C++Min-soo Park
 
포트폴리오에서 사용한 모던 C++
포트폴리오에서 사용한 모던 C++포트폴리오에서 사용한 모던 C++
포트폴리오에서 사용한 모던 C++KWANGIL KIM
 
이펙티브 C++ 스터디
이펙티브 C++ 스터디이펙티브 C++ 스터디
이펙티브 C++ 스터디quxn6
 
Effective c++ 1,2
Effective c++ 1,2Effective c++ 1,2
Effective c++ 1,2세빈 정
 
Mec++ chapter3,4
Mec++ chapter3,4Mec++ chapter3,4
Mec++ chapter3,4문익 장
 
More effective c++ 2
More effective c++ 2More effective c++ 2
More effective c++ 2현찬 양
 
[C++ korea] effective modern c++ study item 14 declare functions noexcept if ...
[C++ korea] effective modern c++ study item 14 declare functions noexcept if ...[C++ korea] effective modern c++ study item 14 declare functions noexcept if ...
[C++ korea] effective modern c++ study item 14 declare functions noexcept if ...Seok-joon Yun
 
연산자 오버로딩
연산자 오버로딩연산자 오버로딩
연산자 오버로딩수빈 박
 
Let's Go (golang)
Let's Go (golang)Let's Go (golang)
Let's Go (golang)상욱 송
 
Api design for c++ 6장
Api design for c++ 6장Api design for c++ 6장
Api design for c++ 6장Ji Hun Kim
 

Similar to Ec++ c 1,2 surmary (20)

A tour of C++ : the basics
A tour of C++ : the basicsA tour of C++ : the basics
A tour of C++ : the basics
 
스위프트 성능 이해하기
스위프트 성능 이해하기스위프트 성능 이해하기
스위프트 성능 이해하기
 
Effective c++ 1
Effective c++ 1Effective c++ 1
Effective c++ 1
 
Effective c++ chapter1 2_dcshin
Effective c++ chapter1 2_dcshinEffective c++ chapter1 2_dcshin
Effective c++ chapter1 2_dcshin
 
[C++ Korea 2nd Seminar] C++17 Key Features Summary
[C++ Korea 2nd Seminar] C++17 Key Features Summary[C++ Korea 2nd Seminar] C++17 Key Features Summary
[C++ Korea 2nd Seminar] C++17 Key Features Summary
 
Modern C++의 타입 추론과 람다, 컨셉
Modern C++의 타입 추론과 람다, 컨셉Modern C++의 타입 추론과 람다, 컨셉
Modern C++의 타입 추론과 람다, 컨셉
 
Effective c++ chapter7_8_9_dcshin
Effective c++ chapter7_8_9_dcshinEffective c++ chapter7_8_9_dcshin
Effective c++ chapter7_8_9_dcshin
 
2013 C++ Study For Students #1
2013 C++ Study For Students #12013 C++ Study For Students #1
2013 C++ Study For Students #1
 
NHNNEXT 개경프14 Subway Rocket Team Study 3rd C++
NHNNEXT 개경프14 Subway Rocket Team Study 3rd C++NHNNEXT 개경프14 Subway Rocket Team Study 3rd C++
NHNNEXT 개경프14 Subway Rocket Team Study 3rd C++
 
포트폴리오에서 사용한 모던 C++
포트폴리오에서 사용한 모던 C++포트폴리오에서 사용한 모던 C++
포트폴리오에서 사용한 모던 C++
 
이펙티브 C++ 스터디
이펙티브 C++ 스터디이펙티브 C++ 스터디
이펙티브 C++ 스터디
 
Java_10 람다
Java_10 람다Java_10 람다
Java_10 람다
 
Java lambda
Java lambdaJava lambda
Java lambda
 
Effective c++ 1,2
Effective c++ 1,2Effective c++ 1,2
Effective c++ 1,2
 
Mec++ chapter3,4
Mec++ chapter3,4Mec++ chapter3,4
Mec++ chapter3,4
 
More effective c++ 2
More effective c++ 2More effective c++ 2
More effective c++ 2
 
[C++ korea] effective modern c++ study item 14 declare functions noexcept if ...
[C++ korea] effective modern c++ study item 14 declare functions noexcept if ...[C++ korea] effective modern c++ study item 14 declare functions noexcept if ...
[C++ korea] effective modern c++ study item 14 declare functions noexcept if ...
 
연산자 오버로딩
연산자 오버로딩연산자 오버로딩
연산자 오버로딩
 
Let's Go (golang)
Let's Go (golang)Let's Go (golang)
Let's Go (golang)
 
Api design for c++ 6장
Api design for c++ 6장Api design for c++ 6장
Api design for c++ 6장
 

Ec++ c 1,2 surmary

  • 1. EC++ C 1,2 Surmary NHN NEXT 남세현
  • 2. C++은 이렇게 구성되어 있다 • C – C++의 기반은 C언어. • C++ of Objective – „클래스‟, 그리고 그것의 특징들(캡슐, 상속…) • C++ of Templete • STL
  • 3. #define 대신에 쓸 수 있는 것들 • 단순한 상수를 쓸 때는 – const • const char* const name = “namse” – enum • 함수같은 매크로를 만들고 싶을땐 – inline
  • 4. const • Const 멤버변수를 정의할 때 • .h -> static const double A; • .cpp -> MyClass::A = 1.35; • 상수 포인터, 상수 데이터 • 상수 포인터 : 포인터 자체가 상수 • 상수 데이터 : 포인터가 가르키는 대상이 상수 Char *name = myName; 비상수 포인터 비상수 데이터 Const Char *name = myName; 비상수p 상수d Char * const name = myName; 상수p 비상수d Const Char * const name = myName; 상수p 상수d
  • 5. const • Const std::~::iterator iter; – Iter가 상수. *iter는 상수 아님. • Std::~::const_iterator iter; – Iter는 비상수, *iter는 상수! • 상수 함수 – Void function() const { blah blah;} – 데이터 멤버 터치 X ( static 빼고!) – 음… 몇 개는 적당히 터치해도 되지 않을까? • Mutable. ( mutable int size; )
  • 6. const • 상수 함수 – 비상수 함수 코드를 컨시브이 해야하는가? – Const_cast, static_cast를 이용할 것! – char& func() { return const_cast<char&>( static_cast<const MyClass&> (*this)->func() ); }
  • 7. 초기화 • 생성자에서 값을 다 넣어주는 것? – I::I(){ name = “namese”; } – 이건 초기화가 아님! 대입임! • 멤버 초기화 리스트를 사용하자! – I::I():name(“Namse”) {} • 왜죠? – C++이잖아…
  • 8. C++이 자동 생성하는 함수 • Class MyClass{}; – MyClass() – MyClass(const MyClass& rhs) {…} – ~MyClass() {…} – MyClass& operator=(const MyClass& rhs) {..} • C++이 만든 함수가 당신이 만든 객체에 어울 리는지 잘 판단해야 합니다! – 그 함수들을 사용해선 안된다고 판단된다면? – private 멤버로 선언하고 일부러 정의(구현)하지 마세요!
  • 9. C++이 자동 생성하는 함수 • Class MyClass{}; – ~MyClass() {…} • 다형성을 사용해야 할 경우엔 – 소멸자를 항상 virtual로 선언하자 – 왜? – 파생 클래스의 모든걸 지우지 못할 수 있으니까!
  • 10. C++이 자동 생성하는 함수 • Class MyClass{}; – ~MyClass() {…} • 소멸자에서 예외가 나온다고? – 예외가 나올 수 있는 소멸자는 시한폭탄! • Try, chtch문을 소멸자에 사용하여 예외를 다 처리하거나, • 프로그램을 아예 끝내버리거나… • 예외는 오직 보통의 함수에서 나오도록!
  • 11. C++이 자동 생성하는 함수 • Class MyClass{}; – MyClass(){…} – ~MyClass() {…} • 파생 클래스 생성자는 기본 클래스 생성자를 실행 한다. – 그때, 기본 클래스 생성자에서 실행되는 가상함수 – 당연히 파생 클래스꺼로 실행되겠지^^ – 하지만, 기본 클래스의 함수가 실행된다. – 기본 클래스의 생성자가 호출될 동안에는 가상 함수는 절대로 파생 클래스 쪽으로 내려가지 않는다. • 생성자, 소멸자 안에서는 가상 함수 호출 하지 마세요!
  • 12. C++이 자동 생성하는 함수 • Class MyClass{}; – MyClass& operator(const MyClass& rhs){…} • int x,y,z; x = y= z = 15; – 이게 관례잖아? 그러면 나의 클래스도… • 대입 연산자에선 *this를 반환하게 하자! X = ( Y = ( Z = 15 ) ); mc = mc1 = mc2 = new MyClass(25); mc = ( mc1 = ( mc2= new My class(25) ) );