プログラム関係の備忘録。技術系記事1000記事以上を目指すブログ

【C++】CMakeでC++のプログラム入門〜コンストラクタとデストラクタ〜

  • 2018年6月9日
  • 2018年6月9日
  • C++
  • 66view
  • 1件
C++

前回
【C++】CMakeでC++のプログラム入門〜クラスを使ったプログラム〜
C++でのクラスを使ったプログラムの作成の続きで、コンストラクタとデストラクタについて。

プログラム

ディレクトリ構成

┣ main.cpp
┣ Calc.h
┣ Calc.cpp
┣ CMakeLists.txt
┗ build

Calc.h


#ifndef _CALC_H_
#define _CALC_H_

// クラス宣言
class Calc
{
public:
    Calc();
    ~Calc();
    void set(int num);
    int get();
private:
    int m_num;
};

#endif  // _CALC_H_

Calc.cpp

#include "Calc.h"
#include <iostream>

using namespace std;

// コンストラクタ
Calc::Calc()
{
    cout << "インスタンス生成" << endl;
}

// デストラクタ
Calc::~Calc()
{
    cout << "インスタンス破棄" << endl;
}

void Calc::set(int num)
{
    m_num = num;
}

int Calc::get()
{
    return m_num;
}

main.cpp

#include "Calc.h"
#include <iostream>

using namespace std;

int main(){
    cout << "数字を入力" << endl;
    int num;
    cin >> num;

    Calc calc;
    calc.set(num);
    cout << calc.get() << endl;

    return 0;
}

CMakeLists.txt

cmake_minimum_required(VERSION 2.8)

set(sources
    main.cpp
    Calc.h
    Calc.cpp
    )
    
add_executable(Main ${sources})


実行結果

数字を入力
3
インスタンス生成
3
インスタンス破棄

説明

コンストラクタとデストラクタはそれぞれのタイミングで自動的に呼ばれるメンバ関数。
コンストラクタはインスタンス生成された直後に、
デストラクタはインスタンスが開放される直前に呼ばれる。

Calc.hでそれぞれを定義する。
クラス名と同じ名前のCalc();がコンストラクタ、
チルダをつけた~Calc();がデストラクタの宣言になる。

Calc.cppではメンバ関数を書くときと似たような感じだが、戻り値がないのが特徴。