読者です 読者をやめる 読者になる 読者になる

親子間をまたいでのオーバーロード

#include "stdio.h"
#include "string.h"

class Parent{
	public:
		Parent(){
			strcpy(name, "parent");
		}
		virtual ~Parent(){}
		char name[256];

		void hoge(int i){
			printf("in parent hoge\n");
			printf(" name: %s\n", name);
		}
};

class Child : public Parent{
	public:
		Child(){
			strcpy(name, "child");
		}
		virtual ~Child(){}

		void hoge(char* child){
			printf("in child hoge\n");
			printf(" name: %s\n", name);
		}
};

int main(){
	Child child;
	int i;
	char* str;

	child.hoge(str);
	child.hoge(i);//コンパイルエラー

	//hoge(int i)を呼ぶとしたら、こう?
	Parent& parent = child;
	parent.hoge(i);

	return 0;
}

childのhoge(char*)が親のhoge(int)を隠してしまうので注意!