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 |