Cya*_*ime 8 c++ virtual inheritance overriding
好的,所以我上了两节课.
class a{
public:
a(){};
void print(){cout << "hello"};
}
class b : public a{
public:
void print(){cout << "hello world";}
}
Run Code Online (Sandbox Code Playgroud)
还有一群有孩子的父母
a blah[10];
blah[5] = b();
Run Code Online (Sandbox Code Playgroud)
比我打印,并希望它说你好世界.
blah[5].print();
Run Code Online (Sandbox Code Playgroud)
但它称之为父母.我该如何解决?
Roa*_*-EX 11
这可以通过声明函数virtual来修复,a:
class a{
public:
virtual void print(){
cout << "hello";
}
}
class b : public a{
public:
virtual void print() {
cout << "hello world";
}
}
Run Code Online (Sandbox Code Playgroud)
这就是在C++中实现多态的方法.更多信息:http://en.wikipedia.org/wiki/Virtual_function
但是,应该注意的是,在您的示例中,它永远不会调用子函数,因为您使用的是对象值,而不是对象的指针/引用.要解决这个问题,
a * blah[10];
blah[5] = new b();
Run Code Online (Sandbox Code Playgroud)
然后:
blah[5]->print();
Run Code Online (Sandbox Code Playgroud)