我在理解C++的一个重要方面时遇到了问题。看下面的例子:使用C++中的继承指针
class human
{
protected:
int age;
public:
human(int a){age=a;}
void f(){cout<<"\n the age of human ="<<age;}
};
和下面的类从上面的类派生:
class student: public human
{
private:
int num;
public:
student(int b, int c):human(b){num=c;}
void g(){cout<<"\n the student with age "<<age<<" has " <<num;}
};
现在我想在下面的代码中使用这些类:
int main()
{
human h1(10);
student s1(11,4);
human* p=&h1;
p->f();
p=&s1;
p->g();
}
但编译器给我错误p->g()
。 有什么问题?
你正试图从一个父类访问子方法。阅读多态性,类指针兼容性和虚函数。 – 2017-01-03 07:31:24
@RawN我认识他们。事实上,孩子的方法是“无效的f”,我改变了这个看看效果。我们有一个指向子类的指针,为什么它找不到一个名为'g'的方法。 – Alireza