#include <iostream>

class A {
    public:
		virtual void hoge() {
			std::cout << "A" << std::endl;
		}
};

class A1 : public A {
	public:
		void hoge() {
			std::cout << "A1" << std::endl;
		}
};

class A2 : public A {
	public:
		void hoge() {
			std::cout << "A2" << std::endl;
		}
};

void recieve_a(A pa) {
	pa.hoge();
}

int main() {
	A1 a1;
	A2 a2;

	recieve_a(a1);	// A1 と表示させたい
	recieve_a(a2);	// A2 と表示させたい
}