CS/C++

C++ 공부 섹션4 : 홍정모의 따배씨쁠쁠

샤아이인 2022. 1. 16.

내돈내고 내가 공부한것을 올리며, 시간을 들여 배운과정을 복습하기보다는 간결히 공부한 흔적은 남긴다 하고 생각하고 써갈 예정입니다. 모든 내용을 이곳에 올릴수는 없으며, 그중 기억남은 몇가지 내용 위주만 올리겠다.

1) 섹션4

◆ 주로 자료형에 관한 수업을 들었다. string에 대하여 처음 공부하게 되었으며, 신기한 auto형 또한 알게되었다.

 

 전역변수 내용 자체야 어렵지 않으니 기억하고 있었다. 중요한것은 global scope 연산자 이다.

출처 - 홍정모의 따배씨쁠쁠 강의

가령 위의 사진처럼 main함수 안에서 같은 변수명의 지역변수와 전역 변수가 둘다 사용된다면, int value = 1; 이후의 행부터는 value가 지역변수이다. 하지만 전역 변수를 사용하기 위해 변수 앞에 ::를 붙혀주면 이는 전역변수를 사용하는 것 이다.

 

 Static 변수또한 중요하게 배웠다.

출처 - 홍정모의 따배씨쁠쁠 강의

static을 선언해 주지 않는다면 위의 사진예에서는 doSomething()이 호출될 때 마다 2가 출력될 것이다.

하지만 static 변수를 선언하면 해당 변수의 메모리 주소지가 고정되고, 이렇게 고정된 메모리 공간에 초기화 된 값 1을 대입한다.

이후 다시 doSomething() 을 호출한다면 다시 1로 초기화 하는 것 이 아니라, 지정된 메모리 공간의 값을 이용해 1씩 더하고 출력하기만 한다.

참고로 static 변수는 선언과 동시에 초기화가 되야 사용이 가능하다. 첫 초기화 이후 다시 초기화 되지는 않는다. 값이 변할 뿐이다.

 

 auto 키워드는 처음 보는 내용 이였다. 123이 int형이라 추론이 정상적으로 가능할경우 컴퓨터가 auto형을 int로 정해준다.

출처 - 홍정모의 따배씨쁠쁠 강의

사용자가 직접 type을 정해주지 않아도 알아서 해준다는 장점이 있다.

 

 해당 자료형을 확인해보기 위해 typeinfo를 include한 후 typeid().name()을 통해서 확인이 가능했다.

출처 - 홍정모의 따배씨쁠쁠 강의

 2가지의 암시적 형 변환 (Implicit type conversion) 에 대하여 배우게 되었다.

1) numeric promotion

출처 - 홍정모의 따배씨쁠쁠 강의

한 자료형의 값이 더 큰 유사한 자료형의 값으로 변환하는 경우 "숫자 승격(numeric promotion)"이 일어난다.

예를 들어, int는 float로 float은 double로 승격될 수 있다.

 

사실 숫자 승격의 경우 작은값을 더 큰 공간으로 이동시키기에 데이터 손실의 문제가 발생하지 않는다.

 

2) numeric conversion

출처 - 홍정모의 따배씨쁠쁠 강의

큰 자료형의 값이 더 작은 유사한 자료형의 값으로 변환하거나, 서로 다른 자료형 간에 변환하는 경우 "숫자 변환(numeric conversion)"이 일어난다.

이는 데이터 손실의 위험이 도사리고 있다.

 

 getline에 대하여도 배웠다.

출처 - 홍정모의 따배씨쁠쁠 강의

getline은 std namespace안에 정의되어 있다. 원래 cin으로 입력을 받을때 space를 기준으로 끊어지는 문재가 발생하기 때문에 한줄 단위로 받아오기 위해 위와 같이 사용한다.

 

 cin.ignore에 대해서도 배웠다.

출처 - 홍정모의 따배씨쁠쁠 강의

cin.ignore의 경우, age에 해당하는 숫자를 입력받을때 숫자 이후의 다른 문자열을 max개 이하 만큼 '\n'(개행문자) 전까지 비워주는 역할을 한다.

 

 typedef에 대해서는 이미 잘알고있었는대 다른 방식의 선언을 배울수 있었다.

출처 - 홍정모의 따배씨쁠쁠 강의

 C언어에서 초기화를 할때 하나하나 씩 대입해주면서 초기화 했었는대 C++에서는 uniform 방식의 초기화가 가능하다.

출처 - 홍정모의 따배씨쁠쁠 강의

앞에서 3가지 방식의 초기화를 배웠을때 각각을 어디에 쓰려나? 싶었는대 이렇게 사용하는것을 보니 너무나 놀라웠다.

 

 아마 이번 쳅터에서 가장 놀라웠던 내용이 아닐까? 싶다.

출처 - 홍정모의 따배씨쁠쁠 강의

구조체 자체야 이미 C에서 여러번 사용했기에 익숙했지만 구조체 안에 함수를 선언하는 것은 처음보는 내용이였다.

정말 놀라워 입이 잠시 벌어졌었다. 이렇게 구조체 안에 함수를 선언한다면 me.print()와 같이 dot(.)를 이용하여 함수를 호출할 수 있다.

너무 놀라운 기능이 아닌? 예전 Python에서 dot를 사용해 함수를 불러오던 방식이 이와같은 흐름일거라 생각되니 더욱 놀라운 순간이였다.

 

2) 나의 현황

● 오늘은 딱히 별일 없었던것 같다. 다전공 신청용으로 제출할 포토폴리오를 준비중이며 아마 이 블로그내용도 사양될것 같다. 나중에 블로그 공지로 잠시 본인인증용 학교와 이름이 올라올거같기도 하다.

 

이글의 모든 사진과 내용의 출처는 홍정모 교수님께 있습니다.

홍정모 교수님 블로그:

 

홍정모 연구소 : 네이버 블로그

안녕하세요! 홍정모 블로그에 오신 것을 환영합니다. 주로 프로그래밍 관련 메모 용도로 사용합니다. 강의 수강하시는 분들은 홍정모 연구소 카페로 오세요.

blog.naver.com

댓글