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

클래스 객체 생성 정적할당, 동적할당 하는 방법

C 와 C++의 가장 큰 차이점 중 하나는 C++에는 class가 있다는 거다.

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

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


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

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

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



정적할당(stack)

' . ' 연산자 사용 이유 : 구조체 변수를 사용 할때 ' . ' 연산자 사용 한 것 처럼 정적 할당한 객체는 ' . ' 연산자를 사용해서 클래스의 멤버 변수를 사용한다.

#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;
}

댓글

이 블로그의 인기 게시물

[Arduino] 아두이노 초음파 센서(HC-SR04) 사용하기

[Arduino] 아두이노 조이스틱 사용하기

[자연 환경] 농약의 장단점 농약이 환경과 인간에게 미치는 영향