2017年12月21日
《その192》 仮想関数の利用( 単純な例 ;^ω^A )
自分でちょっと確認したいことがあって作ったプログラムです。仮想関数が、クラスオブジェクトの動的な型に応じて動作する単純なプログラムです。
※ 派生クラスの中の基底クラス部分オブジェクトへのアクセス(name, tool へのアクセス)について、自分がチェックしてみたいことがあって作ったプログラムです。
// ------------------------------------
#include <string>
#include <iostream>
using namespace std;
class Man0 {
string name;
string tool;
public:
Man0(string na, string tl = "ハサミ")
: name(na), tool(tl) { }
string get_name() { return name; }
string get_tool() { return tool; }
void set_tool(string s) { tool = s; }
virtual void hello() { cout << "こんにちは。"; }
void my_name() {
cout << "私は" << name << "です。";
}
virtual void func() {
cout << tool << "を持っています。\n";
}
};
class Man1 : public Man0 {
string tool;
public:
Man1(string na, string tl = "定規")
: Man0(na), tool(tl) { }
void set_tool(string s, string s2) {
Man0::set_tool(s); tool = s2;
}
void hello() { cout << "よろしくね。"; }
void func() {
cout << get_tool() << "と"
<< tool << "を持っているよ。\n";
}
};
void statement(Man0& x) {
x.hello();
x.my_name();
x.func();
}
int main() {
Man0 tanaka("田中");
Man1 nakada("中田");
statement(tanaka);
statement(nakada);
cout << '\n';
tanaka.set_tool("画用紙");
nakada.set_tool("クレヨン", "鉛筆");
statement(tanaka);
statement(nakada);
}
// ------------------------------------
この記事へのコメント
コメントを書く
この記事へのトラックバックURL
https://fanblogs.jp/tb/7115754
※ブログオーナーが承認したトラックバックのみ表示されます。
この記事へのトラックバック