생성자 4

06. C++_기반클래스 멤버데이터 초기화

C++ 에서 기반 클래스의 데이터를 초기화하는 것은 주로 기반 클래스의 생성자(constructor)에서 수행됩니다.기반클래스(가전)에서 여러 파생클래스를 선언한 후(냉장고, TV, 에어컨) 파생클래스의 생성자를 호출하여 기반클래스의 멤버데이터를 초기화하기 위한 방법에 대해 알아보겠습니다.#include class Appliance{ std::string name; int powerConsumption;public: // 2. Appliance 의 생성자(2 augment)에서 자신의 멤버를 초기화 한다. Appliance(const std::string& name, int power) : name(name), powerConsumption(power) {}};class Airconditioner : ..

카테고리 없음 2024.05.15

04. C++_얕은복사/깊은복사

객체를 복사한다는 것은 내용을 다른 객체로 복사하는 것을 의미하는데, 클래스의 객체가 다른 객체로 복사될 때는 보통 매개변수로 같은 클래스의 객체를 받아서 그 객체의 내용을 복사하여 새로운 객체를 생성하는 복사 생성자 (copy Constructor)에 의해 복사가 수행됩니다. 이 때, 복사 생성자가 어떻게 구현이 되었냐에 따라 객체 복사가 깊은 복사인지, 얕은 복사인지 결정되게 됩니다. 이번 포스팅에서는 깊은 복사, 얕은 복사에 대한 개념과 간단한 예제에 대해 알아보겠습니다.깊은 복사(Deep copy)깊은 복사는 객체를 복사할 때 해당 객체가 동적으로 할당된 메모리를 사용하고 있다면, 이 동적 메모리까지 새롭게 할당하고 복사하여 두 객체가 완전히 독립적인 데이터를 갖도록 하는 것입니다. 따라서 포인터..

C++ 2024.03.24

02. C++_Initializer_list

Initalizer_list는 c++11 표준 라이브러리에서 제공하는 타입으로, 배열의 초기화를 쉽게 처리하기위한 reference 객체입니다. 이 객체는 const T 타입의 요소로 이루어진 배열에 대한 접근을 제공하며, 중괄호 '{}'안에 나열된 값을 가져와 메모리를 초기화 합니다. 이때 배열이 놓인 메모리가 어느 위치인지는 정의되어있지 않고, readonly로 읽기 전용 메모리에 할당되어 s가 파괴될 때 같이 헤제됩니다.  std::initializer_list는 멤버함수로 size(), begin(), end() 등을 가지며, 포인터 2개로 구현되어 연속된 메모리의 시작위치와 끝 위치를 가리킵니다. * initializer_list의 멤버함수#include #include int main(){ ..

C++ 2024.03.18

01. C++_Placement new

Placement new는 메모리를 할당하는 방식 중 하나인데, 이는 사용자가 이미 할당된 메모리 영역에 생성자를 명시적으로 호출하여 객체를 직접 생성하기 위한 방식입니다.이는 일반적인 new 키워드를 사용하여 동적으로 메모리를 할당하는 것과는 조금 다릅니다. 보통 new 키워드를 사용하여 동적으로 메모리를 할당하면 시스템은 메모리를 할당하고 (메모리할당&생성자호출), 생성자를 호출하여 객체를 초기화 합니다. 반면 Placement new는 이미 할당된 메모리 영역에 생성자를 호출하여 객체를 직접 생성합니다. (생성자만 호출)우선 기존의 new 키워드를 활용하여 동적할당을 하는 방법에 대해서 살펴보겠습니다.- new Point(1,2)#include #include class Point{ int x..

C++ 2024.03.11