私有继承的用法疑问
#include <iostream>
#include <string>
class PersonInfo
{
public:
virtual std::string getName() = 0;
};
class Person: private PersonInfo
{
public:
PersonInfo& getInfoRef()
{
return *this;
}
PersonInfo* getInfoP()
{
return this;
}
virtual std::string getName()
{
return "SuperMan";
}
};
int main(void)
{
Person* p = new Person();
PersonInfo& info = p->getInfoRef();
std::cout << info.getName() << std::endl;
PersonInfo* pInfo = p->getInfoP();
//PersonInfo *pInfo = new Person();//error
std::cout << pInfo->getName() << std::endl;
system("PAUSE");
return 0;
}
这算什么用法?
为什么通过This返回能达到public继承一样的效果?
在什么场景下需要考虑这么使用?