C++ 在抽象类中实现纯虚函数-有什么用处吗?
我只是注意到我可以在抽象类本身中实现一个纯虚函数。GCC没有抱怨。这种实现有什么用处吗?有人能用吗C++ 在抽象类中实现纯虚函数-有什么用处吗?,c++,abstract-class,virtual-functions,C++,Abstract Class,Virtual Functions,我只是注意到我可以在抽象类本身中实现一个纯虚函数。GCC没有抱怨。这种实现有什么用处吗?有人能用吗 class AbstractClass { virtual void PureVirtualFunction() = 0; }; void AbstractClass::PureVirtualFunction() //Is there any use of this implementation? { cout << "I am inside pure virtual
class AbstractClass
{
virtual void PureVirtualFunction() = 0;
};
void AbstractClass::PureVirtualFunction() //Is there any use of this implementation?
{
cout << "I am inside pure virtual function of AbstractClass" << endl;
}
class DerivedClass : public AbstractClass
{
public:
void PureVirtualFunction();
};
void DerivedClass::PureVirtualFunction()
{
cout << "I am inside pure virtual function of DerivedClass" << endl;
}
class抽象类
{
虚空PureVirtualFunction()=0;
};
void AbstractClass::PureVirtualFunction()//此实现有任何用途吗?
{
例如,您可以从DerivedClass
实现调用它(如果AbstractClass::PureVirtualFunction
不是私有的):
例如,您可以从DerivedClass
实现调用它(如果AbstractClass::PureVirtualFunction
不是私有的):
您可以使用它来提供派生类可以访问的默认实现
一种可能的用法是“亲爱的派生类作者,此虚拟函数非常重要,我想确保您知道如何使用它。我将提供一个默认实现,但您必须显式使用它。”这样做:
class AbstractClass
{
public:
virtual void PureVirtualFunction() = 0;
};
void AbstractClass::PureVirtualFunction() //Is there any use of this implementation?
{
cout << "I am inside pure virtual function of AbstractClass" << endl;
}
class DerivedClass : public AbstractClass
{
public:
void PureVirtualFunction();
};
void DerivedClass::PureVirtualFunction()
{
AbstractClass::PureVirtualFunction();
}
class抽象类
{
公众:
虚空PureVirtualFunction()=0;
};
void AbstractClass::PureVirtualFunction()//此实现有任何用途吗?
{
cout您可以使用它来提供派生类可以访问的默认实现
一种可能的用法是“亲爱的派生类作者,此虚拟函数非常重要,我想确保您知道如何使用它。我将提供一个默认实现,但您必须显式使用它。”这样做:
class AbstractClass
{
public:
virtual void PureVirtualFunction() = 0;
};
void AbstractClass::PureVirtualFunction() //Is there any use of this implementation?
{
cout << "I am inside pure virtual function of AbstractClass" << endl;
}
class DerivedClass : public AbstractClass
{
public:
void PureVirtualFunction();
};
void DerivedClass::PureVirtualFunction()
{
AbstractClass::PureVirtualFunction();
}
class抽象类
{
公众:
虚空PureVirtualFunction()=0;
};
void AbstractClass::PureVirtualFunction()//此实现有任何用途吗?
{
不能,因为PureVirtualFunction是私有的。@ontherocks谢谢,修复了。这不起作用,因为PureVirtualFunction是私有的。@ontherocks谢谢,修复了。
class AbstractClass
{
public:
virtual void PureVirtualFunction() = 0;
};
void AbstractClass::PureVirtualFunction() //Is there any use of this implementation?
{
cout << "I am inside pure virtual function of AbstractClass" << endl;
}
class DerivedClass : public AbstractClass
{
public:
void PureVirtualFunction();
};
void DerivedClass::PureVirtualFunction()
{
AbstractClass::PureVirtualFunction();
}