본문 바로가기

P.L4

객체 지향 프로그래밍(OOP)의 고찰 이 글은 필자가 개발을 경험해보면서 object라는 개념에 대해 현타가 왔고 이리저리 문서들을 찾아 읽다가 의식의 흐름대로 생각을 적어봤다. 결론만 궁금하다면.. - #결론 객체지향이란 무엇인가? 구조적 프로그래밍의 한계 ---> 객체 지향적 https://en.wikipedia.org/wiki/Structured_programming object(사물,물체) 위주의 프로그래밍을 추구하는 기법이다. 단, OOP에서 말하는 object는 실제 세계의 물리적인 것과 추상적인 것 모두 포함하며 형상화하고 개념화 할 수 있다면 어떤 것이든 object가 될 수 있다. 실제 세계를 인식하는 것과 닮았다. 객체, object의 가장 중요한 핵심은 캡슐화, 추상화. https://scienceon.kisti.re.k.. 2023. 1. 24.
C/C++ call by value, 포인터(call by reference), 메모리 접근 동작 방식 C/C++의 call by value, call by reference 포인터 = call by reference, 그 외 타입은 call by value 라고 그냥 외우는 경우들도 많은데, 이런 암기로는 C/C++ 언어의 특성과 동작 방식을 제대로 이해하기 힘들다고 생각합니다. 먼저 C언어의 변수가 가지고 있는 정보는 변수에 할당된 메모리의 첫번째 주소, 그리고 타입(type)이며 항상 모든 타입 변수에 대해 기본적으로 call by value로 동작하고 있습니다. 그리고 call by reference가 가능하도록 연산자를 제공할 뿐입니다. C언어의 call by value 변수가 의미하는 메모리 영역의 값을 그대로 가져옵니다. 예로 아래 예시의 var 변수는 첫주소 100000000와 long lo.. 2021. 10. 5.
C/C++ call by 포인터, 소멸자, 깊은 복사자가 필요한 이유, 메모리 누수에 대한 고찰 요즘 유행하는 대부분 언어들의 경우 프로그래밍을 할 때 메모리 누수의 고려를 줄이기 위해 특정 타입의 변수에 대해서는 강제로 call by reference 접근만 허용하며 언어의 자체 엔진이 메모리 관리를 합니다. ex) GC(Garbage Collection), Reference Counts 기법 등등 다만 C언어의 경우 변수간의 할당 작업은 구조체 일지라도 모두 call by value 방식이기에 구조체 내부에 포인터가 섞여 있는 경우 메모리 누수에 대해 신경쓸 부분이 많습니다. C/C++의 call by value, 포인터 메모리 동작 방식 https://asung123456.tistory.com/43 C/C++ call by value, 포인터(call by reference), 메모리 접근 동.. 2021. 10. 4.
c++ ofstream 파일 수정/쓰기 file(binary) modify/write c++로 file 입출력을 하려고 시도하던 도중... 입력은 간단했는데 출력하는 ofstream 객체를 활용하여 append 쓰기 뿐만아닌 수정을 동시에 하고 싶었는데, 정식 문서에는 이 기능을 위한 별도의 member는 안보였고, 몇몇 블로그에도 file 내용을 수정하고 싶다면, 모든 file을 읽어 RAM에 올린후에 수정하고 싶은 부분만 수정후 모든 내용을 다시 쓰라는...포스팅만 있었다. 최근 c언어로 시스템콜을 활용하며 공부한 나로서, 운영체제들은 분명 file의 중간 부분을 수정할 수 있는 기능을 제공해주는데 저렇게 비효율적인 방법을 사용하고 싶지 않아 c++의 ofstream의 여러 기능을 찾아보고 테스트하여 방법을 찾았다. 정식 문서에 따르면, 보다 싶히 제공해주는 open 권한 flag가 .. 2020. 6. 13.