【发布时间】:2014-06-10 12:40:36
【问题描述】:
对于以下代码,
class A
{
private:
virtual void f() = 0;
virtual void g() = 0;
...
public:
A()
{
}
...
}
class B : public A
{
private:
void f()
{
...
}
void g()
{
...
}
void h()
{
if (...)
{
f();
}
else
{
g();
}
}
...
public:
B()
{
h();
}
...
}
class C : public A
{
private:
void f()
{
...
}
void g()
{
f();
}
void h()
{
if (...)
{
f();
}
else
{
g();
}
}
...
public:
C()
{
h();
}
...
}
有没有办法避免 h() 的重复(B 类和 C 类中函数 h() 的上下文是相同的)或者我们不能仅仅因为我们不能在构造函数中调用纯虚函数而避免它?
【问题讨论】:
-
你真的想要
privatef 和 g? -
这是教科书中的一个例子,在我的问题中是否重要?
-
这是一个非常模糊的问题,您的构造函数设置不太正确。此外,如果您创建一个私有纯虚函数,则它不能被实例化,也不能其任何子类。
-
@AhmedMasud:哦,是的,它可以。这也让我感到震惊。
-
对你的问题:是的,这是
virtual的主要用途之一。
标签: c++