| この問題を解くためには… |
| → 基本編第4日目参照 |
|---|
問題4:コンストラクタとデストラクタ
prob4-1.(難易度:★)
以下のプログラムに、指定した変更を加えなさい。
prob4-1:number.h
#ifndef _NUMBER_H_
#define _NUMBER_H_
class Number{
private:
// メンバ変数
int a;
int b;
public:
// 二つの数値を設定
void setNumbers(int n1, int n2);
// 二つの数の和を取得
int getAdd();
};
#endif // _NUMBER_H_
#include "number.h"
// 二つの数値を設定
void Number::setNumbers(int n1, int n2)
{
a = n1;
b = n2;
}
int Number::getAdd()
{
return a + b;
}
#include <iostream>
#include "number.h"
using namespace std;
int main(){
Number* pN;
pN = new Number();
pN->setNumbers(1, 2);
cout << pN->getAdd() << endl;
return 0;
}
3
変更点は以下の通り
- Numberクラスにコンストラクタをつけ、メンバ変数a,bを0で初期化する。
- main.cpp内の最後で、pNのメモリを解放する。
prob4-2.(難易度:★★)
以下のプログラムのソースファイル、hoge.cppに、コンストラクタおよび、デストラクタを追加し、期待される実行結果と同じ結果が得られるようにしなさい。コンストラクタおよびデストラクタないでの処理は、指定したとおりにしなさい。
prob4-2:hoge.h
#ifndef _HOGE_H_
#define _HOGE_H_
class Hoge{
public:
// コンストラクタ
Hoge();
// デストラクタ
~Hoge();
void foo();
};
#endif // _HOGE_H_
#include "hoge.h"
#include <iostream>
using namespace std;
void Hoge::foo()
{
cout << "fooメソッド" << endl;
}
#include <iostream>
#include "hoge.h"
using namespace std;
int main(){
Hoge* pH;
pH = new Hoge();
pH->foo();
delete pH;
return 0;
}
コンストラクタ
fooメソッド
デストラクタ
fooメソッド
デストラクタ
なお、デストラクタ、およびコンストラクタで行われる処理は、以下の通りである。
| コンストラクタ | 「コンストラクタ」という文字列を表示 |
|---|---|
| デストラクタ | 「デストラクタ」という文字列を表示 |
prob4-3.(難易度:★)
以下のプログラムは、int型の配列を生成し、そこにあたいを入れて表示するものである。しかし、生成したメモリを解放する部分がない。この部分にメモリの開放をつけて、プログラムを完成させなさい。
prob4-3main.cpp
#include <iostream>
using namespace std;
int main(){
// 配列を生成
int* num = new int[4];
int i;
// 配列に値を代入
for (i = 0; i < 4; i++){
num[1] = i;
}
// 配列の内容を表示
for (i = 0; i < 4; i++){
cout << "num[" << i << "]=" << i << " ";
}
cout << endl;
return 0;
}
n[0]=0 n[1]=1 n[2]=2 n[3]=3









