강의노트

[C++] C++ 프로그래밍 고급 1일차

GS_Park 2016. 3. 28. 21:47

사전, 사후 테스트....??!!!!!

 

뭔가 이번 수업은 지난번의 수업들과는 다를 것 같습니다....

 

c++에 대해서는 공부를 해 본 경험도, 강의를 들어 본 적도 없습니다.

 

새로운 ???????????????????????????????????

 

연산자, 함수 재정의 등 그나마 알고있던 개념과 Friend라는 새로운 용어도 들었습니다.

 

codeblock이라는 새로운 IDE를 설치하였습니다.

 

========================================    2    =====================================

(20:01 ~ 20:52 )

 

컴파일을 하면 실행파일이 생성됨.

윈도우즈는 exe, 리눅스는 elf ->같은 종류의 코드로 묶고 섹션별로 구성

각 섹션별 저장되는 종류에 대해서 자세하게 설명을 해 주셨습니다.

 

전역변수와 초기화되지 않은 static변수는 무슨값을 갖는가에 대한 질문을 하셨는데 저만 당당하게 쓰레기값이라고 해서 틀렸습니다.!!!!!

 

좋은것을 배웠네요. 지역변수 ( Stack memory)는 쓰레기 값이, 전역변수와 static변수는 0이 들어간다는 것을 알려주셨습니다.

 

char *p = "apple";

char arr[] = "apple";

p[0] = 'b';

arr[0] = 'b';

 

위의 4줄에서 틀린줄은....!????

이번에도 과감하게 3번을 선택했는데 다행히 맞았습니다. 그 이유는 상수영역에 쓰기를 시도하기 때문에 컴파일 타임이 아닌 런타임에 잘못된 쓰기에 관한 Error가 발생합니다.

(생각하고 있던 이유는 살짝 틀렸습니다.)

 

const int a ;

int const a;

int const *a;

int *const a;

 

1번과 2번은 같고 3번은 값을 , 4번은 주소를 바꾸지 못하게 함.

앞에있는 것을 바꾸지 못하게 한다고 생각을 하면 된다고 설명을 해 주셨습니다.

 

const는 주로 Libary 함수에서 많이 사용합니다. 연산자 재정의시에도 많이 사용합니다.

참조변수 -> 변수의 별칭을 얘기합니다.

 

int a;

int &b = a;

 

참조변수는 값을 꼭 할당 해 주어야합니다.

 

함수 호출 방법 C언어는 아래의 2가지가 있습니다.

 

call by reference ->

call by value ->

 

C++에서는 아래의 방법도 있음.

참조변수를 복사해서 사용.

 

주소값을 복사하는 것이 값을 모두 복사하는 것 보다 큰 객체나 구조체의 경우에 유리하며 그것보다도 참조변수를 사용하는 것이 주소값을 복사하지 않고도 해당 메모리에 접근하여 사용할 수 있습니다.

 

inline Function

사용될 때 코드를 분기하여 이동하는 것이 아니라 추가하는 것이라고 보면 됩니다.

사용의 효과-> 작은 크기의 코드에서는 분기를 하지 않아 속도 개선을 할 수 있지만 Cache이상의 크기를 가지면 역효과를 낼 수 있습니다.

 

지역 변수에 대한 참조를 리턴하는것은 좋은 코드가 아닙니다.

 

==================================    3    ===========================================

(21:04 ~ )

 

함수를 const로 사용??

 

새로운 도구를 사용하여 프로젝트를 만들고 코드를 불러와서 실행을 하는 것을 해 보았습니다. 이번 강의는 호흡이 빨라 사진음 첨부하면서 따라가기가 조금 버겁습니다.

 

클레스 전체를 Friend로 등록을 하는 것 보다 private 맴버변수를 접근하는 메소드만 Friend로 등록을 하는 것이 더 바람직합니다.