공부 52

11. 가상함수와 추상클래스

11.1 가상함수상속 관계에서 함수를 중복하는 경우 가상 함수와 오버라이딩가상 함수(virtual function)virtual 키워드로 선언된 멤버 함수virtual 키워드의 의미동적 바인딩 지시어컴파일러에게 함수에 대한 호출 바인딩을 실행 시간까지 미루도록 지시class Base{public: virtual void f(); // f()는 가상 함수}; 함수 오버라이딩(function overriding)파생 클래스에서 기본 클래스의 가상 함수와 동일한 이름의 함수 선언, 내부 로직 빼고는 완전히 동일해야 함기본 클래스의 가상 함수의 존재감을 상실시킴파생 클래스에서 오버라이딩 함수가 호출되도록 동적 바인딩함수 재정의라고도 부름다형성의 한 종류  오버라이딩과 가상 함수 호출 오버라이딩: 파생 클래..

공부/C++ 2024.06.02

10. 상속

10.1 상속 개념C++에서의 상속(Inheritance)C++에서의 상속이란?클래스 사이에서 상속관계 정의객체 사이에는 상속 관계 없음기존의 클래스가 가진 기능을 이어받아서 새로운 클래스를 정의하는 것기본 클래스: 상속을 해주는 클래스, 일반적인 특징을 제공파생 클래스: 상속을 받는 클래스, 일반적인 특징 + 구체적인 특징- 기본 클래스의 속성과 기능을 물려받고 자신만의 속성과 기능을 추가하여 작성기본 클래스에서 파생 클래스로 갈수록 클래스의 개념이 구체화다중 상속을 통한 클래스의 재활용성 높임다른 클래스를 상속받아서 새로운 클래스를 정의할 때, 기존의 클래스에 구현되어 있는 기능은 새로운 클래스에 다시 구현할 필요가 없다. 상속의 표현 상속의 목적 및 장점간결한 클래스 작성기본 클래스의 기능을 물려받..

공부/C++ 2024.05.27

9. friend와 연산자 중복

9.1 C++에서의 friendC++ friendfriend 함수클래스의 멤버 함수가 아닌 외부 함수전역 함수, 다른 클래스의 멤버 함수friend 키워드로 클래스 내에 선언된 함수: friend 함수라고 부름클래스 정의 안쪽에 friend 키워드를 쓰고 함수의 선언을 적어 줌.클래스의 모든 멤버를 접근할 수 있는 권한 부여friend 선언의 필요성클래스의 멤버로 선언하기에는 무리가 있고, 클래스의 모든 멤버를 자유롭게 접근할 수 있는 일부 외부 함수 작성 시항목실제 세계에서의 친구프렌드 함수존재가족 X, 외부인클래스 외부에 작성된 함수, 멤버가 아님자격친하면 가족 구성원으로 인정 받을 수 있음,  자기거 뭐 만져도 되는 수준 ex) 하이킥 객식구클래스의 멤버 자격 부여, 클래스의 모든 멤버에 대해 접근..

공부/C++ 2024.05.16

8. 함수와 참조, 복사생성자

8.1 객체전달과 참조'값에 의한 호출'로 객체 전달함수를 호출하는 쪽에서 객체 전달객체 이름만 사용함수의 매개 변수 객체 생성매개 변수 객체 생성매개 변수 객체의 공간이 스택에 할당호출하는 쪽의 객체가 매개 변수 객체에 그대로 복사됨매개 변수 객체의 생성자는 호출되지 않음 (복사 생성자가 실행됨)함수 종료매개 변수 객체의 소멸자 호출값에 의한 호출 시 매개 변수 객체의 생성자가 실행되지 않는 이유는? (복사 생성자 말하는 것이 아님)호출되는 순간의 실인자 객체 상태를 매개 변수 객체에 그대로 전달하기 위함 '값에 의한 호출' 방식으로 함수가 호출되는 과정매개 변수 객체 c 생성될 때는 복사 생성자가 실행됨  '값에 의한 호출'시에 생성자와 소멸자의 비대칭 실행매개변수로 받은 c에서 생성자가 실행되지 않..

공부/C++ 2024.05.14

7. 여러가지 객체의 생성방법

7.1 객체배열과 객체포인터객체 배열 및 포인터의 생성 및 사용객체 배열 선언 가능기본 타입 배열 선언과 형식 동일객체 배열 정의 시 따로 지정하지 않으면 항상 디폴트 생성자로 초기화Circle circleArraay[3]; // 디폴트 생성자로 초기화 객체 배열의 초기화배열의 각 원소 객체당 생성자 지정하는 방법{ } 안에 생성자 나열Circle circleArray[3] = {Circle(10), Circle(20), Circle()};- circleArray[0] 객체가 생성될 때, 생성자 Circle(10) 호출- circleArray[1] 객체가 생성될 때, 생성자 Circle(20) 호출- circleArray[2] 객체가 생성될 때, 생성자 Circle() 호출 객체 배열 생성시 디폴트 생성..

공부/C++ 2024.05.14

6. 접근지정자, const 객체, static 멤버

6.1 접근 지정자접근지정자캡슐화의 목적객체 보호, 보안C++에서 객체의 캡슐화 전략객체의 상태를 나타내는 데이터 멤버(멤버 변수)에 대한 보호중요한 멤버는 다른 클래스나 객체에서 접근할 수 없도록 보호외부와의 인터페이스를 위해서 일부 멤버는 외부에 접근 허용멤버에 대한 3가지 접근 지정자private: 디폴트동일한 클래스의 멤버 함수에만 제한함클래스 밖에서 직접 접근 불가protected클래스 자신과 상속받은 자식 클래스에만 허용public모든 다른 클래스에 허용, 클래스 밖에서 직접 접근 가능class Sample{private: // private 멤버 선언protected: // protected 멤버 선언public: // public 멤버 선언};접근 지정자해당 클래스의 멤버함..

공부/C++ 2024.04.18

5. 생성자와 소멸자

5.1 생성자와 소멸자객체의 생성 및 소멸객체의 생성객체가 생성될 때 생성자가 자동으로 호출된다. 객체의 소멸객체가 소멸될 때 소멸자가 자동으로 호출된다.생성자와 소멸자생성자와 소멸자는 자동으로 호출되는 함수이다.생성자: 객체가 생성되는 시점에서 자동으로 호출되는 멤버 함수솜려자: 객체가 소멸되는 시점에서 자동으로 호출되는 멤버 함수생성자와 소멸자 함수의 사용생성자: 객체가 생성될 때 객체가 필요한 초기화를 위해소멸자: 객체가 소멸될 때 객체의 정리를 위해생성자와 소멸자 이름생성자: "클래스이름()" 형식의 함수    참고) 생성자는 매개변수 받을 수 있음소멸자:"~클래스이름()" 형식의 함수생성자와 소멸자는 리턴 값이 없음리턴 타입 없음. void도 안됨 생성자 특징객체 생성 시 오직 한 번만 호출자동..

공부/C++ 2024.04.11

4. 클래스와 객체의 기본

1. 클래스와 객체의 기본 개념세상 모든 것이 객체이다.캡슐화(encapsulation)객체의 본질적인 특성객체를 캡슐로 싸서 그 내부를 보호하고 불 수 없게 함캡슐에 든 약은 어떤 색인지 어떤 성분인지 보이지 않고ㅡ 외부로부터 안전캡슐화의 목적객체 내 데이터에 대한 보안, 보호, 외부 접근 제한 객체의 일부 요소는 공개된다.객체의 일부분 공개외부와의 인터페이스(정보 교환 및 통신)를 위해 객체의 일부분 공개TV 객체의 경우, On/Off 버튼, 밝기 조절, 채널 조절, 음량 조절 버튼 노출. 리모콘 객체와 통신하기 위함 C++ 객체는 멤버 변수와 멤버 함수로 구성된다.객체는 상태(state)와 행동(behavior)으로 구성TV 객체 사례상태 -> 속성, 멤버 변수on/off 속성 - 현재 작동 중인지..

공부/C++ 2024.04.09

3. 개선된 함수 기능

3.1 인라인 함수함수 호출에 따른 시간 오버헤드인라인 함수란?함수 호출 시 발생하는 오버헤드를 줄이기 위해서 함수를 호출하는 대신 함수가 호출되는 곳마다 함수의 코드를 복사하여 넣어주는 특별한 함수 인라인 함수인라인 함수함수의 선언이나 정의에 inline 키워드를 지정하여 선언된 함수인라인 함수에 대한 처리인라인 함수를 호출하는 곳에 인라인 함수 코드를 확장 삽입매크로와 유사 (매크로는 전처리 과정에서 이루어짐)코드 확장 후 인라인 함수는 사라짐 (컴파일 과정에서 사라짐)인라인 함 수 호출함수 호출에 따른 옵버헤드 존재하지 않음프로그램의 실행 속도 개선컴파일러에 의해 이루어짐인라인 함수의 목적C++ 프로그램의 실행 속도 향상자주 호출되는 짧은 코드의 함수 호출에 대한 시간 소모를 줄임C++에는 짧은 코..

공부/C++ 2024.03.31