본문 바로가기

복습/C++

[C++] 복습일지 c++ 파일분할 안녕하세요 오늘은 C++ 파일분할법에 대해서 공부를 했습니다. 지금까지 저는 'main.cpp' 라는 파일 하나에 작성을 해왔습니다. 물론 틀린 방법은 아닙니다. 하지만 프로그램의 규모가 커지고, 코드의 줄도 길어진다면 가독성이 떨어지지않을까요?또 다른곳에서 사용을 할 수도 있는 코드는 재사용성이 있으므로, 나누는것이 효율적이라는 생각이 듭니다. '헤더파일''cpp파일' 이렇게 두 종류로 나눌 수 있는데요header는 단어를 해석하자면, 머리 라는뜻이 있는데요 헤더파일 : 클래스의 선언부, 함수 선언 확장자는 .hcpp파일 : 클래서의 구현부, 함수 구현 확장자는 .cpp 그렇다면 나누는 법을 알아보도록 하겠습니다. #include class Calculator { public: ~Calculator()..
[C++] 복습일지 inline함수 그리고 virtual 안녕하세요 오늘은 inline 함수에 대하여 공부해서 적어보도록 하겠습니다. 일반 함수와 인라인함수의 가장 큰 차이가 무엇일까요? 프로그래머가 어떻게 코드를 짯느냐가 아니라, C++ 컴파일러가 코드를 프로그램에 어떻게 결합하느냐 입니다. [일반함수의 호출과정] → 함수호출 → 함수호출명령 다음의 명령의 주소를 메모리에 저장→ 스택에 매개변수 복사→ 함수가 시작되는 메모리 위치로 점프→ 함수실행→ 함수의 return값을 레지스터에 복사→ 저장해두었던 주소의 명령으로 돌아옴 [인라인함수의 호출과정] → 컴파일 된 함수코드→ 프로그램의 다른 코드 안에 직접 삽입 그렇다면 당연히 속도는 인라인함수가 약간 빠르게 진행됩니다그러나 메모리 측면에서는 그렇지 않습니다.왜냐하면 예를들어 인라인함수를 10번 호출을 한다면..
[C++] 복습일지 part 2 - 4 #멤버 이니셜라이저 # 상속 (Inheritance)# 오버로딩(Overloading)과 오버라이딩(Overriding)# 가상함수, 순수가상함수 (Virtual Function, Pure Virtual Function)# 멤버이니셜라이저 (Memeber Initializer) #멤버 이니셜라이저(Member Initializer) 여기에 한 코드가 있다. #include int main() { int num1 = 10; int num2(20); std::cout
[C++] 복습일지 part 2 - 3 #가상함수, 순수가상함수 # 상속 (Inheritance) # 오버로딩(Overloading)과 오버라이딩(Overriding) # 가상함수, 순수가상함수 (Virtual Function, Pure Virtual Function) # 멤버이니셜라이저 (Memeber Initializer) # 가상함수(Virtual Function) class A { public: void Message() { std::cout 원래위치 함수를 호출하는부분에 그 함수가 위치한 주소로 연결시켜주는것을 '바인딩(Binding)' 이라고 한다. 동적바인딩과 정적바인딩의 예시코드를 들어보겠습니다. [동적바인딩코드] int main() { int num; Monster *monster = nullptr; std::cin >> num; switch(num)..
[C++] 복습일지 part 2 - 2 #오버로딩(Overloading)과 오버라이딩(Overriding) # 상속 (Inheritance) # 오버로딩(Overloading)과 오버라이딩(Overriding) # 가상함수, 순수가상함수 (Virtual Function, Pure Virtual Function) # 멤버이니셜라이저 (Memeber Initializer) 이번시간에는 오버로딩과 오버라이딩에 대해 알아보도록할게요 스타크래프트 '오버로드' 아시나요? 네 그 오버로드입니다. #오버로딩 (Overloading) 단어의 뜻을 한번 보겠습니다 감이 오시나요? 오버로딩(Overloading) - 메서드의 이름이 같고 - 인자의 자료형이 다르거나 - 인자의 개수가 다르거나 여기 메서드가있습니다. void add() { std::cout
[C++] 복습일지 part 2 - 1 #상속(Inheritance) # 상속 (Inheritance)# 오버로딩(Overloading)과 오버라이딩(Overriding)# 가상함수, 순수가상함수 (Virtual Function, Pure Virtual Function)# 멤버이니셜라이저 (Memeber Initializer) 오늘은 상속(Inheritance)에 대해서 복습을 하겠습니다. 상속이 무엇인가?'객체지향 프로그래밍' 에서 항상 강조를 하고 중요한 요소인 '상속'에 대해 알아보도록합시다. 상속은무언가를 물려 받는 행위이다.상속받는다 그렇단다.중간쯤 보면 재산상속이있다. 그렇다면 컴퓨터, 그러니깐 프로그래밍에서 상속이란 어떻게 하는것이고, 왜 사용하는것인가? 어떻게 사용하는지부터 알아보자. # 어떻게 사용? class 클래스이름 : 접근제어자 상속받으려는클래스 {..
[C++] 복습일지 part 1 이것이 저의 첫 글이 되네요프로그래밍 공부에 발을 들이면서, 개발일지를 쓰면 나중에 도움도되고일기장 같은 느낌이라 좋을 것 같아서 시작합니다 코딩을 시작한지 얼마 되지 않아서 표현이 미숙 할 수 있어요 ㅎㅎ 18.01.06 [ 복습일지 ] #1 절차지향프로그래밍과 객체지향프로그래밍#2 클래스란 무엇인가?#3 접근제어자#4 생성자 소멸자 #5 그 외에 알게 된 것 [ #1 ]절차지향프로그래밍이란? - 사실 절차지향과 객체지향을 정반대로 생각하는것이 잘못된 생각인것 같습니다. 절차지향프로그래밍은 뭐 위에서 아래로 흐르고~~ 그럼 객체지향프로그래밍은 위에서 아래로 흐르지 않는걸까요? 객체지향프로그래밍도 위에서 아래로 흐르게 되어있습니다. 여기서 차이점을 알아야합니다.절차지향프로그래밍은 프로그램을 순서와 흐름을..