It won't hurt to try

[C++/윈도우프로그래밍응용]10. 생성자와 소멸자 본문

C++/윈도우프로그래밍응용

[C++/윈도우프로그래밍응용]10. 생성자와 소멸자

yongki.doki 2021. 9. 23. 18:50

생성자

  • 생성자는 객체를 생성할때 사용한다.
  • 멤버 변수의 값을 초기화한다.

생성자를 사용하는 경우

  - 객체동작에 필요한 메모리 공간을 할당하는 경우

  - 객체에 필요한 기타 자원을 할당하는 경우

 

소멸자

  • 클래스 이름에 물결(~)표시를 붙여 생성
  • 값을 반환하거나 매개 변수를 사용할 수 없음

소멸자를 사용하는 경우

  - 객체 소멸과 동시에 메모리를 반환하는 경우

  - 객체 소멸과 동시에 OS자원을 반환하는 경우

 

생성자와 소멸자를 이용한 간단한 예시

예)계산기 - 더하기 기능

 

main.cpp

//계산기 예제 프로그램
#include <iostream>
#include "calculate.h"
using namespace std;

int main()
{
    Calculate cal(1,2);
    int result = cal.sum();
    cout << result << endl;
}

calculate.h

// CALCULATE_H가 정의되어있지 않은경우 CALCULATE_H를 정의한다. endif까지
#ifndef CALCULATE_H
#define CALCULATE_H

#include <iostream>
using namespace std;

class Calculate
{
    int num1, num2;
public:
    Calculate(int n1=0, int n2=0); // 생성자
    ~Calculate();
    int sum();
};

#endif // CALCULATE_H

 

calculate.cpp

#include "calculate.h"

Calculate::Calculate(int n1, int n2) : num1(n1), num2(n2)
{
    cout << "Calculate 클래스 생성" << endl;
}

Calculate::~Calculate()
{
    cout << "Calculate 클래스 소멸" << endl;
}

int Calculate::sum()
{
    return num1 + num2;
}

 

 

초기화 리스트(initializer list)

  - 멤버 변수를 쉽게 초기화 할수 있는 C++14이후 문법

  - Calculate::Calculate(int n1, int n2) : num1(n1), num2(n2)

Calculate::Calculate(int n1, int n2)
{
    num1 = n1;
    num2 = n2;
    cout << "Calculate 클래스 생성" << endl;
}

Calculate::Calculate(int n1, int n2) : num1(n1), num2(n2)
{
    cout << "Calculate 클래스 생성" << endl;
}

 

300x250
300x250
Comments