c++类的继承问题
資深大佬 : gargar 3
C++渣渣,遇到这个题目,请问 Dan(std::function<Niao* ()> createNiao) 是什么用法?
还有应该怎么标志,才能知道产生 Egg 的是哪个类( Niao 还是 Yazi )?
#include <stdexcept> #include <functional> class Dan; class Niao { public: virtual ~Niao() {}; virtual Dan* lay() = 0; }; class Dan { public: Dan(std::function<Niao* ()> createNiao) { throw std::logic_error("Waiting to be implemented"); } Niao* hatch() { throw std::logic_error("Waiting to be implemented"); } }; class Yazi : public Niao { public: Yazi() { } Dan* lay() { throw std::logic_error("Waiting to be implemented"); } }; #ifndef RunTests int main() { Niao* yazi = new Yazi(); Dan* dan1 = yazi->lay(); Niao* childYazi1 = dan1->hatch(); } #endif
大佬有話說 (3)