정보공간_1

[4기 수원 전낙현] VS 2013 #1 본문

IT 놀이터/Elite Member Tech & Talk

[4기 수원 전낙현] VS 2013 #1

알 수 없는 사용자 2013. 12. 2. 17:41

이번 포스팅 부터는 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

순서로 연재하며 한 포스팅에 2가지 기능씩 쓰겠습니다.


Raw String Literals

c++에서 문자열을 사용할때 역슬래쉬나 따옴표등 특수문자를 쓰기위해 escape 문자로 역슬래쉬를 사용합니다.

이는 아래와 같이 매우 가독성이 떨어지고 복잡한 코드를 생성하게 됩니다.

<그림1>

이에 따라서 python이나 c#에서는 이미 지원하고 있는 기능인 raw string literals가 c++11에 추가되어 있었는데 visual studio 2012에서는 지원하지 않았습니다.

이제 visual studio 2013에서는 아래와 같이 사용할 수 있습니다.

<그림2>

std::string str4 = R"*(

())""

)*";

부분에서 *부분은 구분자로서 어떠한 문자로도 대체가 가능합니다.

예를들어
 
std::string str4 = R"asdf(
())""
)asdf";

식으로도 사용 가능합니다. 이 경우에는 raw string안에 ')asdf"'라는 문자가 있으면 에러가 발생하게 됩니다.

Non-static datamember initializers

c++에서는 Non-static 변수에 대한 초기화를 선언과 동시에 하지 못했습니다. 초기화 리스트등 다른 방법을 쓸 수 있지만 직관성이 떨어지고 유지보수하는데에 조금은 불편한점이 있었습니다.

이전의 c++에서는 아래와 같은 방법으로 non-static 변수에 대해 초기화를 해주어야 했습니다.


        


하지만 visual studio 2013에서는 아래와 같이 선언과 동시에 초기화를 할 수 있습니다.



아래와 같이 사용하면 더욱 직관적이고 효율성 있게 클래스를 디자인 할 수 있습니다.



다음 포스팅에서는 Default template arguments for function templates, Defaulted and deleted functions에 대해서 포스팅 하겠습니다.

참고문헌

1) MSDN, Microsoft, http://msdn.microsoft.com

2) 비주얼 C++ 12의 향상된 표준화 라이브러리, 제이슨 김, 마이크로소프트웨어 2013년 11월 호