在实现C++多态时,如果提供了接口,但只想让他重写虚函数行为,不想让用户自己去使用,可以这样实现,在基类中将虚函数(接口)定为私有,如下:
#include <iostream>
using namespace std;
class Base
{
public:
void Do(){this->print();}
private:
//设置为私有后,基类自己决定怎样去使用它
virtual void print(){cout << "Base::print"<<endl;}
};
class Child : public Base
{
public:
virtual void print(){cout << "Child::print" <<endl;}
};
int main()
{
Base *p = new Child;
p->print();//这里会有编译错误
delete p;
return 0;
}