언어 자료구조 알고리즘/Escort C++

[C++] 1. 2 클래스를 제외한 C언어와 다른 문법 사항(태그명, 변수 선언 위치)

언제나휴일 2016. 4. 15. 11:59
반응형

1.2.2 편의성 제공

 

 C++언어에서는 신뢰성에 문제가 되지 않는 범위에서 사용자에게 많은 편의성을 제공하고 있습니다. 이번에는 C언어에서는 없었던 문법 사항 중에 사용자 편의성에 관한 부분을 다루어 봅시다.

 

- 태그 명이 형식 명으로 사용

 

  C언어에서는 사용자 정의 형식의 변수를 선언할 때 명명하는 태그 명(struct, union, enum 뒤에 오는 명칭)을 바로 형식 명으로 사용할 수 없습니다. 이럴 때 typedef을 통해 형식 명을 정의하거나 혹은 struct Stu stu;와 같이 키워드와 태그 명을 붙여 변수를 선언해야 합니다. C++에서는 태그 명을 바로 형식 명으로 사용할 수가 있기 때문에 Stu stu;와 같은 표현을 할 수 있습니다.

 

태그 명을 형식 명으로 사용한 예

#include <string> //string.h와 다른 것입니다.

using std::string;

enum Gender

{

    FEMALE,

    MALE

};

 

struct StuInfo

{

    int num;

    string name;

};

 

void main()

{

    Gender g = MALE; //태그 명인 Gender를 형식 명으로 사용

    StuInfo si = {2,"홍길동"}; //태그 명인 StuInfo를 형식 명으로 사용

}

 

- 원하는 위치에 변수 선언

 

 C언어에서 변수 선언은 블록 시작 위치에서만 가능합니다. C++언어에서는 변수 선언에 대한 위치가 블록 중간에 오는 것을 허용합니다. 그렇다고 하더라도 반복문 내부에 선언하는 것은 바람직하지 않습니다. 반복문 내부에 변수를 선언하면 매 루프를 수행할 때마다 변수를 위한 메모리 할당과 해제가 반복되게 되기 때문입니다.


*C11 표준을 따라는 컴파일러에서 C언어도 변수 선언 위치는 자유롭습니다.


1장 C++ 들어가면서 동영상 보기

(모든 동영상 강의는 무료입니다.)

반응형