https://youtu.be/W0sSAdUKhKE

https://youtu.be/xpdNpukDrbw

https://youtu.be/pYTaO0paOfI

https://youtu.be/v4Nn_EeCVKA

main.cpp

#include <iostream>

#include "Arr.h"
#include "CArr.h"

class CTest // 기본 private:
{
private://비공개
	int a;

public://공개
	CTest()
		:a(10)
	{

	}
public://공개

};



int main()
{
	CTest* pTest = new CTest;
	delete pTest;



	tArr arr = {};
	InitArr(&arr);

	PushBack(&arr, 10);
	PushBack(&arr, 20);
	PushBack(&arr, 30);

	ReleaseArr(&arr);


	CArr carr;
	carr.push_back(10);
	carr.push_back(20);
	carr.push_back(30);

	int iData = carr[1];
	carr[1] = 100;

	return 0;
 }

CArr.h

#pragma once
class CArr
{
private:
	int*	m_pInt;
	int		m_iCount;
	int		m_iMaxCount;

public:
	void push_back(int _Data);
	void resize(int _iResizeCount);


	int& operator[](int idx);
public:
	CArr();
	~CArr();


};

CArr.cpp

#include "CArr.h"

#include <assert.h>

void CArr::push_back(int _Data)
{
	int i = 0;

	// 힙 영역에 할당한 공간이 다 참 확인
	if (m_iMaxCount <= m_iCount)
	{
		//재할당
		resize(_Data);
	}

	// 데이터 추가
	m_pInt[m_iCount++] = _Data;
}

void CArr::resize(int _iResizeCount)
{
	// 현재 최대 수용량 보다 더 적은 수치로 확정하려는 경우
	if (m_iMaxCount >= _iResizeCount)
	{
		assert(nullptr);
	}


	//1. 리사이즈 시킬 개수만큼 동적할당 한다
	int* pNew = (int*) new int[_iResizeCount];

	//2. 기존 공간에 있던 데이터들을 새로 할당한 공간으로 복사시킨다.
	for (int i = 0; i < m_iCount; ++i)
	{
		pNew[i] = m_pInt[i];
	}
	//3. 기존 공간은 메모리 해제
	delete[] m_pInt;

	//4. 배열이 새로 할당된 공간을 가리키게 하다.
	m_pInt = pNew;

	//5. MaxCount 변경점 적용
	m_iMaxCount = _iResizeCount;
}

int& CArr::operator[](int idx)
{
	return m_pInt[idx];
}

CArr::CArr()
	:m_pInt(nullptr)
	, m_iCount(0)
	, m_iMaxCount(2)
{
	m_pInt = new int[2];

}

CArr::~CArr()
{
	delete[] m_pInt;

}

C++ 클래스 특징

접근제한 지정자

클래스 내의 맴버변수 or  맴버함수 의 접근 레벨

 

생성자, 소별자

객체 생성, 소멸 시 자동으로 호출

직접 만들지 않으면 기본 생성자, 기본 소멸자가 만들어짐

 

맴버함수

해당 클래스가 사용하는 전용 함수

해당 클래스의 개체가 필요함.

맴버함수를 객체를 통해서 호출하며, 해당 객제의 주소가  this 포인터로 전달

'C,C++' 카테고리의 다른 글

C,C++ 포인터와 레퍼런스의 차이점  (0) 2023.07.17
C,C++ 템플릿  (0) 2023.07.17
C,C++기초 리스트  (0) 2023.07.15
C,C++기초 함수 포인터  (0) 2023.07.15
C 기초 가변 배열  (0) 2023.07.14

+ Recent posts