#include <stdio.h>
#include <iostream>
using namespace std;
class MyClass
{
public:
int age;
char *name;
private:
float pi;
public:
MyClass() // 생성자
: age(1), name((char *)"AB"), pi(3.14f)
{
}
~MyClass() // 소멸자
{
printf("%s, %d, %f \n", name, age, pi);
}
public:
void SetAge(int _age)
{
this->age = _age;
}
};
int main()
{
// 기본 사용법
MyClass newClass;
newClass.SetAge(11);
newClass.name = (char *)"ab";
// 클래스 동적할당
MyClass *newClass2 = new MyClass;
delete newClass2;
return 0;
}
클래스 멤버변수의 default 접근 제한 지정자는 private 이다.
클래스로 배열 만들기
// arr.h
#pragma once
// 클래스로 배열 만들기
class CArr
{
private:
int *pData;
int count;
int maxCount;
public:
void RPush(int data);
void resize(int resizeCount);
int &operator[](int idx);
public:
CArr();
~CArr();
};
// arr.cpp
#include "arr.h"
#include <iostream>
#include <cassert>
CArr::CArr() : pData(nullptr),
count(0), maxCount(1)
{
pData = new int[1];
}
CArr::~CArr()
{
delete[] pData;
}
void CArr::RPush(int data)
{
if (this->maxCount <= this->count)
{
resize(this->maxCount * 2);
}
this->pData[this->count] = data;
this->count++;
}
void CArr::resize(int resizeCount = 1)
{
if (this->maxCount >= resizeCount)
{
assert(false);
}
int *pNewData = new int[resizeCount];
for (int i = 0; i < this->count; i++)
{
pNewData[i] = this->pData[i];
}
delete[] this->pData;
this->pData = pNewData;
this->maxCount = resizeCount;
}
int &CArr::operator[](int idx)
{
return this->pData[idx];
}
// main.cpp
#include <stdio.h>
#include <iostream>
#include "./include/Array/arr.h"
using namespace std;
int main()
{
CArr cArr;
cArr.RPush(1);
cArr.RPush(2);
cArr.RPush(3);
int data = cArr[2];
cArr[2] = 22;
printf("%d \n", cArr[2]);
return 0;
}
'Server > C++' 카테고리의 다른 글
STL) Vector와 List (0) | 2024.07.27 |
---|---|
템플릿 (template) (0) | 2024.07.26 |
Linked List (0) | 2024.07.23 |
함수와 포인터 (0) | 2024.07.23 |
랜덤 정수 생성 (1) | 2024.07.23 |