C++

[C++] 클래스 객체 정적 할당, 동적 할당 하는 법

Let it out 2024. 1. 30. 21:04

class : 객체를 사용하기 위한 틀이라고 많이 표현한다. class안에 변수, 함수를 선언하며 class 안에 있는 변수, 함수를 멤버변수, 멤버함수라고 부른다.

객체 : class라는 틀을 그대로 복사해 온다. 복사를 했으므로 class에 있는 멤버 변수, 멤버 함수를 사용 할 수 있다.

 

class 안에 있는변수, 함수를 사용하기 위해서 객체를 만들어 줘야 한다.

class가 하나만 존재 하면 수 많은 객체를 생성 하여 사용 할 수 있다는 장점이 있다. 생산성이 좋다고 표현한다.

객체 생성 방법에는 2가지 방법이 있다.

 

 

정적할당(stack)

아래 코드를 보면 function 이라는 객체가 멤버 변수 num을 접근 할때 ' . ' 연산자를 사용하는 것을 볼수 있다.

(int num = function.num;)

#include<iostream>
using namespace std;
class Function
{
    public:
    int num = 10;//멤버 변수
};

void main()
{
    Function function;// 객체 생성
    int num = function.num;// . 연산자를 사용해서 멤버 변수 사용
    cout << num;
}

 

 

 

동적할당(heap)

동적 할당을 시에는 new 연산자를 사용한다.

동적 할당을 위해 *funtion을 포인터로 선언 했다.

포인터가 class의 멤버 변수를 사용하기 위해서는 ' -> ' 연산자를 사용한다.

실무에서는 객체 할당은 정적보단 동적 할당을 많이 사용한다.

#include<iostream>
using namespace std;
class Function


{
    public:
    int num = 10;//멤버변수
};

void main()
{
    Function *function = new Function;// 객체 생성
    int num = function->num;//-> 연산자를 사용해서 멤버변수를 사용.
    cout << num;
    delete function; //동적 할당 해제.
}
 

 

 

구조적으로 객체 동적할당 하기 

객체 생성 시 가장 많이 사용 하는 형태는 클래스.h, 클래스.cpp, main.cpp 총 3개의 파일을 만들어서 사용한다.

구조적인 코딩을 위해 아래 그림과 같은 방법으로 객체 생성을 해주면 좋다.

 

1. 클래스 멤버 함수 선언(Function.h)

클래스 안에 멤버 함수를 선언 해 준다.

#pragma once
class Function
{
    public:
    int sum(int a, int b);
};

 

 

2. 클래스 멤버 함수 기능 구현(Function.cpp)

Function.h 에 있는 클래스 멤버 함수의 기능을 구현한다.

#include"Function.h"
int Function::sum(int a, int b)
{
    int sum = a + b;
    return sum;
}

 

 

3. main에서 멤버 함수 사용(GitExample.cpp)

동적으로 객체 생성을 해준 후 멤버 함수를 사용 해준다.

#include<iostream>
#include"Function.h"
using namespace std;
void main()
{
    Function *function = new Function;// 객체 생성
    int num = function->sum(10, 20);
    cout << num;
}
반응형

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

[C++] C++에서 sqlite3 사용하기  (0) 2024.01.26
[C++] C++ sqlite3.lib 만들기  (0) 2024.01.26
[C++] const (콘스트) 란?  (0) 2024.01.26
[C++ ] 2차원 포인터 정리  (0) 2024.01.25
[C++ ] 1차원 포인터 정리  (0) 2024.01.25