[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 onceclass 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;}
댓글
댓글 쓰기