#include <iostream> #include <string> class File { public: File(const std::string &name): strFileName(name) { } std::string Name() const { return strFileName; } virtual void Open() { std::cout << "I am file." << std::endl; } virtual ~File() { } private: std::string strFileName; }; class FilePic: public File { public: FilePic(const std::string &name): File(name) { } virtual void Open() { std::cout << "打开图像文件" << std::endl; } }; class BmpPic: public FilePic { public: BmpPic(const std::string &name): FilePic(name) { } virtual void Open() { std::cout << "浏览位图文件" << std::endl; } }; class GifPic: public FilePic { public: GifPic(const std::string &name): FilePic(name) { } virtual void Open() { std::cout << "浏览Gif文件" << std::endl; } }; int main() { File *fp; BmpPic pic("位图"); GifPic gif("gif"); fp = &pic; fp->Open(); fp->Name(); fp = &gif; fp->Open(); fp->Name(); system("pause"); return 0; }