본문 바로가기

C.C++/전반4

RAII RAII (Resource Acquisition is initialization) 은 사용 전에 획득되야하는 자원의 생명주기를 오브젝트의 생명주기에 바인딩하는 기술이다. 쉽게 말하자면 초기화 (사용되기 전) 에서 자원 획득을 해야하며 자원은 초기화단계에서 획득이 되어야한다라고 볼 수 있다. cppreference에는 RAII의 이점을 다음과 같이 설명하고 있다. RAII guarantees that the resource is available to any function that may access the object RAII는 오브젝트에 접근할 수 있는 어떠한 함수에서도 자원이 유효하다는 것을 보장한다. It also guarantees that all resources are released whe.. 2018. 5. 23.
파라미터에서 Pointer, Reference template void bar(T * pTy){ pTy = nullptr; } template void gildong(T & rTy){ rTy = nullptr; } C에는 pass-by-reference가 없다. 단지 pointer를 이용하여 주소를 복사하고 함수에서는 복사된 주소값을 이용하여 pass-by-reference처럼 보이게 동작하는 것이다. 뭐 개념적으로 본다면 위의 동작을 pass-by-reference라고 할 수 있을 것이다. 이것은 의견이 분분하니 넘어가도록 하고 결론적으로 위의 bar 함수는 지역변수 pTy에 nullptr을 대입할 뿐이다. 그리고 기대하던 결과는 나오지 않을 것이다. 문법은 코드를 읽기 쉽게 해준다. c++의 references도 그러한 역활을 하고 있다. 포인터.. 2017. 6. 22.
다차원 배열 어저께 이차원 배열에 대해서 다른 사람에게 설명을 못하겠다고 하여서 대신 설명하게 되었다. 그 친구가 설명한 방식은 다음과 같았다. "이차원 배열이란 말 그대로 이차원적인 배열이고 int a[3][5]는 3x5랑 같다. 그러니까 이러한 모양이다." □□□□□ □□□□□ □□□□□사실 이런식으로 설명하면 int a[3][3][5]는 □□□□□ ■■■■■□ □□□□□■□ □□□□□■ □□□□□ 이런식으로 설명이 가능할 것이다. 하지만 메모리에는 다음과 같이 올라가지 않는다. 1)int a[3][5]{ {1, 2, 3, 4, 5} , {6, 7, 8, 9, 10}, {11, 12, 13, 14, 15} }; int *p = (int *)a; for (int i = 0; i 2017. 6. 20.
네이밍 얼마전 Java언어를 사용하는 학교 과제를 하고 있었는데, 코드를 잠깐 보던 친구가 내 코드의 함수명을 보고 이렇게 말하였다... Q : 너 변수명도 대문자로 시작하고 패키지명도 2번째 파일부터 대문자로 시작하는데 자바 컨벤션은 이렇게 하지 말라고 되어있는데 왜 이렇게 했니? 위의 링크로 들어가 보면 밑에 처럼 작성되어 있는 것을 볼 수 있을 것이다. Naming conventions make programs more understandable by making them easier to read. They can also give information about the function of the identifier-for example, whether it's a constant, package, o.. 2017. 5. 6.