以下のプログラムはエラーが発生しますが、
その原因を答えなさい
class Character
{
public:
int m_Hp;
int m_Mp;
int m_Attack;
int m_Deffence;
}
void main(void)
{
Character ch;
ch.m_Hp = 10;
}
■問い4
関数のオーバーロードとはなんですか?
■問い5
以下はAddSum関数のオーバーロードの宣言です。
この宣言が原因でエラーが発生しますが、どの関数が原因となっているでしょう?
※1.定義部分にはエラーはないと仮定します。
※2.複数回答可
①.int AddSum(int a, int b);
②.float AddSum(float a, float b);
③.short AddSum(short a, short b);
④.int AddSum(int a, float b);
⑤.char AddSum(short a, short b);
■問い6
問い5のエラーの原因を答えなさい
■問い7
コンストラクタの目的を答えなさい
■問い8
デストラクタの目的を答えなさい
■問い9
以下のプログラムはエラーが発生しますが、
原因を答えなさい
class Test
{
public:
void Test()
{
}
void PrintHelloWorld()
{
printf("HelloWorld\n");
}
};
void main(void)
{
Test t;
t.PrintHelloWorld();
}
■問い10
デフォルトコンストラクタとはなんですか?
■問い11
以下のクラスを生成時にm_Hpとm_Mpの値を生成側が指定できるように修正しなさい。
※今のコンストラクタはそのまま残しておくこと
class Character
{
public:
Character()
{
m_Hp = 10;
m_Mp = 5;
}
int m_Hp;
int m_Mp;
};
void main(void)
{
Character ch;
printf("HP = %d\nMP = %d\n", ch.m_Hp, ch.m_Mp);
}
■問い12
以下のクラス変数「ch」のデストラクタが呼び出されるのは
①~⑤のどこでしょうか?
class Character
{
public:
①Character()
{
}
②~Character()
{
}
};
void main(void)
{
srand(NULL);
int num = rand() % 10;
if (num >= 5)
{
③Character ch;
④}
⑤}
■問い13
インスタンスとはなんですか?
■問い14
インスタンスとオブジェクトの違いを答えなさい
■問い15
インスタンス化とはなんですか?
■問い16
動的オブジェクトと静的オブジェクトの違いを答えなさい
■問い17
動的オブジェクトを使用する上でメリットとデメリットを答えなさい
■問い18
以下のコードはエラーになりますが、原因を答えなさい
class Character
{
public:
Character()
{
m_Hp = 10;
m_Mp = 3;
}
int m_Hp;
int m_Mp;
};
void main(void)
{
Character *ch = new Character();
printf("HP = %d\n", ch.m_Hp);
}
以下のゲッターはアクセサとしては間違っています。
原因を答えなさい
class Character
{
public:
Character() {}
private:
int m_Hp;
int m_Mp;
int GetHp() { return m_Hp; }
int GetMp() { return m_Mp; }
};
■問い27
カプセル化とはなんですか?
■問い28
継承とはなんですか?
■問い29
継承元クラスの別名を3つ以上答えなさい
■問い30
継承先クラスの別名を3つ以上答えなさい
■問い31
汎化とはなんですか?
■問い32
汎化のメリットを答えなさい。
※問い31にメリットを記述している場合、
その旨を記述しなさい
■問い33
以下のクラスから汎化したクラスCharaBaseを作成しなさい
※メンバ関数の定義を行う必要はありません。
class Player
{
public:
void LevelUp();
void Init();
void Control();
void Draw();
private:
float m_PosX; // 座標
float m_PosY; // 座標
int m_LayerId; // レイヤーID
float m_Scale; // 拡縮サイズ
float m_Angle; // 回転角度
int m_Money; // お金
int m_Exp; // 経験値
int m_Hp; // HP
int m_Mp; // MP
int m_At; // 攻撃力
int m_Deff; // 守備力
int m_Level; // レベル
};
class Enemy
{
public:
void Init();
void Control();
void Draw();
void AiRun();
private:
float m_PosX; // 座標
float m_PosY; // 座標
int m_LayerId; // レイヤーID
float m_Scale; // 拡縮サイズ
float m_Angle; // 回転角度
int m_Money; // お金
int m_Exp; // 経験値
int m_RaceId; // 種族ID
int m_RaceSubId; // 種族サブID
int m_Hp; // HP
int m_Mp; // MP
int m_At; // 攻撃力
int m_Deff; // 守備力
};
アップキャストを行った場合、以下のように明示的にキャストを行わなくていい理由を答えなさい
class CharaBase
{
};
class Player : public CharaBase
{
};
void main(void)
{
Player pl;
CharaBase *ch = &pl;
}
多態性を利用して以下の出力結果になるように
必要な処理を記述しなさい。
※各クラスに関しても必要な処理を全て書いている保障はありません。
クラス:
class BookShop
{
public:
};
class Junkdo : public BookShop
{
public:
void PrintShopName()
{
printf("ジュンク堂\n");
}
};
class Kinokuniya : public BookShop
{
public:
void PrintShopName()
{
printf("紀伊国屋\n");
}
};
class Book1st : public BookShop
{
public:
void PrintShopName()
{
printf("Book1St\n");
}
};
出力結果:
紀伊国屋
Book1st
ジュンク堂
■問い46
ポリモーフィズムのメリットを答えなさい
■問い47
デフォルト引数とはなんですか?
■問い48
以下のクラスのコンストラクタを修正し、
デフォルト引数を使用してm_Hpとm_Mpに対して
実引数無しでも動作するようにしなさい
デフォルトの値
m_Hp => 100
m_Mp => 50
class Character
{
public:
Character(int hp, int mp)
{
m_Hp = hp;
m_Mp = mp;
}
private:
int m_Hp;
int m_Mp;
};
■問い49
以下の処理のエラーの原因を答えなさい。
class Character
{
public:
Character(int hp = 100, int mp)
{
m_Hp = hp;
m_Mp = mp;
}
private:
int m_Hp;
int m_Mp;
};
void main(void)
{
Character ch(100, 50);
}
■問い50
以下のクラスの問題点を答えなさい。
class CharaBase
{
public:
CharaBase()
{}
~CharaBase()
{}
protected:
int m_Hp;
int m_Mp;
};
class Player : public CharaBase
{
public:
Player()
{
m_MagicIdList = new int[10];
}
~Player()
{
delete [] (m_MagicIdList);
}
private:
int m_Level;
int *m_MagicIdList;
};
void main(void)
{
CharaBase *pl = new Player();
delete(pl);
}
■問い51
問い50の問題が発生する理由を答えなさい
■問い52
メンバイニシャライザとはなんですか?
■問い53
メンバイニシャライザのメリットを答えなさい
■問い54
以下のコードでメンバイニシャライザの初期化順番を答えなさい
class Character
{
public:
Character() :
m_Hp(0),
m_Mp(0),
m_Def(0),
m_At(0)
{}
private:
int m_Hp;
int m_Mp;
int m_At;
int m_Def;
};
1番目:
2番目:
3番目:
4番目:
■問い55
以下のクラスに対してメンバイニシャライザを追加しなさい
class Drawer
{
public:
Drawer(float posx, float posy)
{
}
protected:
float m_PosX;
float m_PosY;
};
class CharacterBase : public Drawer
{
public:
CharacterBase(float posx, float posy, int hp, int mp)
{
}
private:
int m_Hp;
int m_Mp;
};