일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- BAM
- 인공지능
- 증강현실
- Python
- 패턴 인식
- 구글 앱 엔진
- 파이썬
- 가상화
- SSM
- 멤버십
- 고려대학교
- 패턴인식
- 동아리
- 물걸레자동세척로봇청소기
- NarwalFreo
- 나르왈프레오
- 삼성
- 신경회로망
- hopfield network
- Neural Network
- Google App Engine
- 신경망
- Bidirectional Associative Memory
- 삼성전자 소프트웨어멤버십 SSM
- 물걸레로봇청소기추천
- 갤럭시탭S8울트라
- 하이퍼바이저
- Friendship
- 삼성소프트웨어멤버십
- 빅데이터
- Today
- Total
정보공간_1
[4기 수원 전낙현] VS 2013 #2 본문
저번 포스팅에 이어 VS 2013 #2에서는 c++11에서 추가된 기능중 visual studio 2012에서는 지원하지 않았지만 visual studio 2013부터 지원하는 6가지의 기능을 3편으로 나누어 연재하겠습니다.
1. Raw String Literals
2. Non-static datamember initializers
3. Default template arguments for function templates
4. Defaulted and deleted functions
5. Delegating constructors
6. Alias templates
Default template arguments for function templates
c++에서는 아래와 같이 템플릿 클래스에 대해서 기본 생성자를 지정할 수 있습니다.
하지만 함수 템플릿에 대해서는 기본 생성자를 지정할 수 없었습니다. 하지만 visual studio 2013에서는 함수 템플릿에 대해서도 기본 생성자를 지정할 수 있습니다.
함수 템플릿의 기본 생성자를 잘 사용하려면 아래의 내용이 많은 도움이 될것입니다.
특히, 아래쪽 부분의 함수 오버로딩시에 어떤 함수를 써야할지 명확하지 않은 경우는 compile에러가 발생하니 조심해야 할것입니다.
<출처-voidnish.wordpress.com>
Defaulted and deleted functions
C++의 클래스에서는 암묵적으로 생성자, 소멸자, 복사생성자, 연산자등에 대해서 여러가지를 암묵적으로 제공합니다. 보통은 필요한것에 대해서는 오버로딩을 통하여 그 기능을 사용하지만 필요없을 때에 명시적으로 표시하지 않으면 암묵적으로 제공되는 기능때문에 많은 오류가 나올 수가 있으며, 유지보수시에도 이전에 암묵적인 기능들을 쓰기위해 오버로딩하지 않은것인지 애매모호 할 수 가 있습니다.
따라서 C++11에서는 이러한 부분을 보완하기 위하여 아래와 같이 명시적으로 표현 할 수 있으며 이로인해서 사용자의 실수를 줄일 수 있습니다. (최근에 C++의 변화과정을 보면 C++언어의 특성상 나올 수 있는 많은 부분에서 사용자의 실수를 방지할 수 있는 안전장치가 추가되는 부분이 많는것 같습니다.)
위의 코드를 보면 클래스 A에서는 기본생성자를 쓴다는것을 명시적으로 표현하고 있고
클래스 B에서는 기본생성자가 삭제되어 main함수 안에서 인스턴스를 생성할때 에러 메세지를 출력하게 됩니다.
아래는 MSDN에 있는 C++11이전버전과 이후버전의 차이입니다.
명시적으로 표현하는것이 이전버전에 비하여 좋은 점이 많이 써있지만 가장 와닿은것은
구버전 처럼 선언할경우 멤버함수나 friend함수가 대입생성자나 복사생성자를 호출할 경우 정의가 없기때문에 런타임에서 에러가 발생할 확률이 있다는것이 였습니다. 이러한 부분을 방지해주는 좋은 기능인것 같네요.
참고문헌
1) MSDN, Microsoft, http://msdn.microsoft.com
2) 비주얼 C++ 12의 향상된 표준화 라이브러리, 제이슨 김, 마이크로소프트웨어 2013년 11월 호
3) Default template arguments for function templates, nish, voidnish.wordpress.com
'IT 놀이터 > Elite Member Tech & Talk' 카테고리의 다른 글
[4기 광주 박주연] Java Generic 이해 (0) | 2013.12.04 |
---|---|
[4기 수원 전낙현] VS 2013 #3 (0) | 2013.12.02 |
[4기 수원 전낙현] VS 2013 #1 (0) | 2013.12.02 |
[4기 수원 전낙현] 안드로이드 기반 디바이스의 디지털 포렌식 #2 (0) | 2013.12.02 |
[4기 수원 전낙현] 안드로이드 기반 디바이스의 디지털 포렌식 #1 (0) | 2013.12.02 |