关于c++指向子类的基类指针,与指向子类的子类指针

看下面的例子

class Base
{public:
	virtual void f(float x){ cout << "Base::f(float) " << x << endl; }
	  void g(float x){ cout << "Base::g(float) " << x << endl; }
	void h(float x){ cout << "Base::h(float) " << x << endl; }
};
class Derived : public Base
{public:
	 virtual void f(float x){ cout << "Derived::f(float) " << x << endl; }
	 void g(int x){ cout << "Derived::g(int) " << x << endl; }
	void h(float x){ cout << "Derived::h(float) " << x << endl; }
};
void main(void)
{	Derived d;
	Base *pb = &d;   Derived *pd = &d;
	pb->f(3.14f); 	 pd->f(3.14f); 
	pb->g(3.14f); 	 pd->g(3.14f); 
	pb->h(3.14f); 	 pd->h(3.14f); 
}

指向子类的指针,只有 红色的情况下

父类函数与子类函数形式相同(包括参数类型) 父类是实函数 父类指针调父类函数;子类调用子类
父类函数与子类函数形式相同 父类是虚函数 都调用子类
父类函数与子类函数形式不同   父类调父类;子类调子类

猜你喜欢

转载自blog.csdn.net/viomag/article/details/18227419