【发布时间】:2013-08-27 09:13:25
【问题描述】:
我最近了解到,在 C++ 中,纯虚函数可以有一个主体。
我知道虚函数体存在是因为我想从派生类中调用她,但是我可以这样做吗?
class Base{
int x;
public:
virtual void print()=0;
};
void Base::print(){
cout << x;
}
class Derived : public Base{
int y;
public:
void print(){
Base::print();
cout << y;
}
};
结果会是:x的值,然后y的值?
我真正的意思是函数 Base::print() 会知道从 Derived 类中的函数获取 x 的值????
【问题讨论】:
-
@kol : 你的编译器。
-
@kol:是的,它们可以有一个甚至可以调用的主体。 :) ""Effective C++" Meyers 提到了一个纯虚函数有一个主体的原因:实现这个纯虚函数的派生类可以在它们的代码中调用这个实现。如果两个不同的派生类的部分代码是相似的那么在层次结构中向上移动它是有意义的,即使函数应该是纯虚拟的。”
-
究竟做了what的结果?此外,
Base::print()不会从Derived中的函数获取任何值,因为Derived没有返回任何值的函数 - 您可能需要改写该部分。
标签: c++