모던C++/OOP

Function Overloading : 함수의 이름이 같고 그 파라미터가 다를 때 name mangling을 통해서 컴파일러가 서로 다른 함수를 만들어 주는 것. 이 코드를 compiler explorer를 통해 어셈블리 코드를 확인해 보면 function(3), function(2.7) 은 각각에 맞는 함수를 콜 해주고 있고 이름이 바뀌어 있다. (_Z8functioni: ...) (_Z8functiond: ...) 이런 식으로 name mangling 된 것. 이렇기에 function overloading은 static polymorphism이라고도 불리는데, 그 이유는 어떤 함수가 바인딩 될 지 컴파일 시간에 결정이 되기 때문이다. 이와 비교되는 개념으로는 dynamic polymorphism이 ..
다음과 같은 코드를 짰을 때, 컴파일러가 알아서 만들어주는 메소드들이 있다. 1. Constructor 2. Destructor 3. copy/move Constructor 4. copy/move Assignment : 일반적으로 Constructor는 직접 만들어주고 destructor을 포함한 나머지 5가지 메소드들은 직접 만들어주지 않는다. but 이렇게 포인터를 활용해서 리소스를 관리하게 되면 개발자가 직접 이 5가지의 메소드를 관리해 주어야 한다. 구글에서 c++ rule of three / rule of five 로 검색하게 되면 cppreference에서 관련 내용을 확인 가능하다. https://en.cppreference.com/w/cpp/language/rule_of_three The ..
멤버 생성 리스트에 대해서 알아보면, 크게 Class의 컨스트럭터와 디스트럭터가 있다. 1. Constructor : Object가 생성될 때 불러지는 함수. 클래스 이름과 같은 함수를 만들면 완성됨. 2. Destructor : Object가 없어질 때 불러지는 함수 클래스 이름 앞에 ~가 붙은 함수를 만들면 완성됨. ex) Compiler Explorer로 어셈블리 코드를 확인해 보면, 메인 함수 안에서 다른 함수를 부르는 call 명령어를 확인해 보면, 처음에 고양이 컨스트럭터 Cat::Cat(), 다음으로 Cat::speak(), 마지막으로 고양이 디스트럭터 Cat::~Cat() 가 순서대로 불려지는 걸 확인할 수 있다. 즉 컨스트럭터와 디스트럭터는 클래스 안에서 마법처럼 동작하는 것이 아니라, ..
class에서 사용되는 static은 앞선 챕터에서 다루었던 빌드의 링크 프로세스에서 사용되는 static과는 다른 의미이다. static의 사용 예시는 다음과 같은 3가지 경우로 나누어 볼 수 있다. 1. static member function (static 멤버 함수) 2. static member variable (static 멤버 변수) 3. static variable in a function. (함수 안의 static 변수) 1. static member function 1) static member function은 object와 연관되어 있지 않다! 이 코드에서처럼 멤버 함수는 굳이 object를 만들지 않아도 콜 할 수 있다. 멤버 함수가 굳이 객체를 만들지 않아도 콜 할 수 있는 이유..
C++의 OOP란, 객체Object 가 중심이 되서 프로그래밍하는 패러다임. C++ 는 여러가지 패러다임을 제공해 주는 멀티 패러다임 언어이다. 1) procedural 2) functional 3) OOP - ( Object-Oriented Programming ) 4) generic 를 모두 지원해 준다. 그 중에서도 OOP가 중심이 되는 언어가 C++이다. 또 다른 OOP 중심 언어는, java, C#, python 이 있다. C++의 OOP는 class를 중심으로 구현하게 되므로, 먼저 object와 class가 어떻게 다른지 이해해야 한다. 1. class와 object의 차이 class: definition. -Cat object: 메모리에 공간을 차지하고 있는 객체 하나하나를 지칭. -kit..
HeadlessCreator
'모던C++/OOP' 카테고리의 글 목록