前回
【C++】CMakeでC++のプログラム入門〜コンストラクタとデストラクタ〜
今回はインスタンス生成のタイミングをコントロールする為の書き方。
プログラム
ディレクトリ構成
┣ main.cpp
┣ Calc.h
┣ Calc.cpp
┣ CMakeLists.txt
┗ build
Calc.h
[cpp]#ifndef _CALC_H_
#define _CALC_H_
#include <iostream>
using namespace std;
class Calc
{
public:
Calc();
~Calc();
void judg(string num);
string get();
private:
string m_num;
};
#endif
[/cpp]
Calc.cpp
[cpp] #include "Calc.h"#include <iostream>
using namespace std;
Calc::Calc()
{
cout << "判定開始" << endl;
}
Calc::~Calc()
{
cout << "判定終了" << endl;
}
void Calc::judg(string num)
{
if(num == "落ちる")
{
m_num = "正解";
}
else
{
m_num = "不正解";
}
}
string Calc::get()
{
return m_num;
}
main.cpp
[cpp] #include <iostream>#include "Calc.h"
using namespace std;
int main(){
string msg;
cout << "ことわざクイズ\n" << endl;
cout << "猿も木から?" << endl;
cin >> msg;
Calc* calc = new Calc();
calc->judg(msg);
cout << calc->get() << endl;
delete calc;
return 0;
}
CMakeLists.txt
[cpp] cmake_minimum_required(VERSION 2.8)set(sources
main.cpp
Calc.h
Calc.cpp
)
add_executable(Main ${sources})
[/cpp]実行結果
ことわざクイズ
猿も木から?
落ちる
判定開始
正解
判定終了
説明
インスタンスの生成のタイミングをコントロールするために、newとdeleteを使っている。
前回はクラスのインスタンスを生成していた
Calc calc;
今回はコンストラクタを対象にインスタンスを生成している
Calc* calc = new Calc();
ポインタcalcでのアクセスにはアロー演算子が使われる。
デストラクタを呼び出すタイミングには以下を使う
delete calc;