// ============================================================================ // p1c04_07_01 — 4.7.1.1 为什么需要继承 // 来源:川大 C++/LinuxC wiki「02.Qt方向」 // 说明:本文件由 gen_part1.py 合并页面中的教学片段而成。每个片段用 // // --- 原文片段 [pageId:blockIdx] --- 标注出处。 // 已做最小修正(笔误/平台移植),详见 docs/ERRATA.md。 // ============================================================================ #include using namespace std; // --- 原文片段 [58954461:0] 4.7.1.1 为什么需要继承 --- // 网页类(原文小标题,转为注释) class IndexPage{ public: //网页头部 void Header(){ cout << "网页头部!" << endl; } //网页左侧菜单 void LeftNavigation(){ cout << "左侧导航菜单!" << endl; } //网页主体部分 void MainBody(){ cout << "首页网页主题内容!" << endl; } //网页底部 void Footer(){ cout << "网页底部!" << endl; } private: string mTitle; //网页标题 }; #if 0 //如果不使用继承,那么定义新闻页类,需要重新写一遍已经有的代码 class NewsPage{ public: //网页头部 void Header(){ cout << "网页头部!" << endl; } //网页左侧菜单 void LeftNavigation(){ cout << "左侧导航菜单!" << endl; } //网页主体部分 void MainBody(){ cout << "新闻网页主体内容!" << endl; } //网页底部 void Footer(){ cout << "网页底部!" << endl; } private: string mTitle; //网页标题 }; void test_1(){ NewsPage* newspage = new NewsPage; newspage->Header(); newspage->MainBody(); newspage->LeftNavigation(); newspage->Footer(); } #else //使用继承,可以复用已有的代码,新闻业除了主体部分不一样,其他都是一样的 class NewsPage : public IndexPage{ public: //网页主体部分 void MainBody(){ cout << "新闻网页主主体内容!" << endl; } }; void test_1(){ NewsPage* newspage = new NewsPage; newspage->Header(); newspage->MainBody(); newspage->LeftNavigation(); newspage->Footer(); } #endif int main(){ test_1(); return EXIT_SUCCESS; } // --- main ---