상속 관계 생성자/소멸자 상속 받은 클래스는 어떤 생성자/소멸자를 호출하는가? 상속 관계가 성립되면 생성자와 소멸자의 작동이 복잡해지며 중요한 측면이 되기도 한다. C++에서는 파생 클래스가 생성되거나 소멸될 때 기본 클래스의 생성자와 소멸자가 어떻게 호출되는지에 대한 규칙이 있다. 우선 상속 관계에서 자식 클래스의 생성자가 호출된다면 반드시 부모 클래스의 생성자도 호출되어야 한다. 이를 따로 구현하지 않는다면, 부모 클래스의 기본 생성자를 먼저 호출한다. 부모 클래스의생성자를먼저 호출한다. 클래스의 모든 멤버 변수가 생성된다. (즉, 멤버 변수들의 생성자가 호출된다.) 생성자의 본문이 실행된다. 상속 관계 생성자 호출 #include using namespace std; class Base { publ..
상속 (Inheritance) 클래스를 다른 클래스에 물려주는 것 C++에서 상속은 객체 지향 프로그래밍(OOP)의 중요한 개념 중 하나이며, 그 개념은 크게 어렵지는 않다. 상속은 기존 클래스(부모 클래스 또는 기본 클래스)의 특성과 동작을 새로운 클래스(자식 클래스 또는 파생 클래스)에게 물려주는 메커니즘을 제공한다. 이를 통해 코드의 재사용성을 높이고 계층적인 구조를 형성하여 프로그램의 구성을 용이하게 만들 수 있다. 상속이 일어나면 접근 제어자에 따라 부모 클래스의 멤버들을 자식 클래스가 참조할 수 있게되고, 자식 클래스는 자신만의 멤버를 더 선언할 수 있다. 또한, 자식 클래스는 부모 클래스의 파생된 클래스가되어 자식 클래스가 부모 클래스에 포함되는 관계를 형성한다. 혹은 자식 클래스는 부모 클..
상수형 메서드 const 키워드를 통해 상수를 만드는 방법은 간단하다. int a와 같은 변수 선언 앞에 const를 붙이면 a 값이 상수로 선언되며 초기 값을 그대로 유지하고 다른 값을 새로 대입할 수 없게한다. (volatile 키워드나 직접 메모리 주소에 접근하여 변경할 수도 있긴하다.) 상수 매개변수 이런 const 키워드는 일반 메서드, 클래스 멤버 메서드, 생성자의 매개변수에 키워드로도 붙일 수도 있다. 이렇게하면 const 값으로 지정된 매개변수는 읽기 전용으로 선언되어 변경이 되지 않아야할 매개변수를 수정하는 실수를 하지 않게된다. const 매개변수 #include using namespace std; void processData(const int data) { data = 10; //..
정적 멤버 지역 변수는 스코프 안에서 생성되고 스코프가 종료되면 해제된다. 멤버 변수의 경우 클래스 객체(인스턴스)가 생성될 때 메모리에 할당되고 해당 객체가 소멸할 때 같이 제거된다. 이말은 즉슨, 지역 변수나 멤버 변수로는 스코프나 객체 사이에 공용 변수나 공용 함수를 사용하기 위해 고정으로 메모리에 할당되어있는 객체가 필요하다는 말이다. class A { public: int X; void y() {) }; int main() { A a, b; ) 위와 같이 A라는 클래스의 인스턴스 a, b가 존재하면 둘 객체가 가진 x라는 변수는 전혀 다른 메모리에 할당되어있는 완벽히 다른 변수가 된다. 즉, 멤버 변수는 한 객체에 소속되어 각 다른 객체의 변수에 접근이 불가능하다는 것이다. 정적 멤버 메서드 정..
깊은 복사와 얕은 복사 모든 프로세스에서 복사는 수없이 일어난다.(항상 그렇다는건 아니지만...) 예전 단원에서는 복사와 이동의 차이를 언급한 적이 있다. 더보기 복사는 실제 값의 복사본을 생성하여 다른 변수에 할당하고 이동은 실제 값을 다른 변수에 이동시키고 원본 변수는 제거되거나 변형되는 것이다. 복사는 특정 변수가 가진 실제값을 다른 변수에게도 전달해주는 것을 의미한다. C++에서 복사의 의미는 메모리 관리와 객체 간의 상호 작용을 다루는 데 중요하고 효율적인 복사는 메모리 관리와 프로그램의 성능에 영향을 미칠 수 있다. 이에 우리는 깊은 복사와 얕은 복사라는 개념을 공부해보려 한다. 얕은 복사 (Shallow copy) 얕은 복사는 쉽게 말하자면 두 개 이상의 포인터 변수가 동일한 값의 주소를 가..
- Total
- Today
- Yesterday
- 컴파일
- c++
- 구조
- 클래스
- thread
- 레지스터
- 운영체제
- 수학
- 멀티스레드
- 메모리
- malloc
- 상속
- 함수
- 백준
- 명령어
- 입출력
- 할당
- 포인터
- CPU
- static_cast
- 게임수학
- 스레드
- dynamic_cast
- 초기화
- 크기
- 프로세스
- New
- const
- 인터럽트
- 알고리즘
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |