当前位置: 首页 > news >正文

《小城镇建设》》杂志社网站东方市住房和城乡建设局网站

《小城镇建设》》杂志社网站,东方市住房和城乡建设局网站,衡器行业网站建设模板,英文网站建设 论文文章目录关于继承继承与非继承的对比继承方式继承中的对象模型继承中的构造和析构顺序继承同名成员处理方式继承同名静态成员处理方式多继承语法菱形继承关于继承 我们发现#xff0c;定义一些类时#xff0c;下级别的成员处理拥有上一级的共性#xff0c;还有自己的特性。 … 文章目录关于继承继承与非继承的对比继承方式继承中的对象模型继承中的构造和析构顺序继承同名成员处理方式继承同名静态成员处理方式多继承语法菱形继承关于继承 我们发现定义一些类时下级别的成员处理拥有上一级的共性还有自己的特性。 这时候我们就可以考虑利用继承的技术减少重复代码。 继承的好处减少重复代码 语法 class 子类 : 继承方法 父类 如class A:public B; A类称为子类或派生类 B类称为父类或基类 派生类中的成员包含两大部分 一类是从基类继承过来的一类是自己增加的成员。 从基类继承过来的表现其共性而新增的成员体现了其个性。 继承与非继承的对比 非继承方式实现 #includeiostream using namespace std;//Java页面 class Java { public:void header(){cout 首页、公开课、登录...公共头部 endl;}void footer(){cout 帮助中心、交流合作、站内地图...公共底部 endl;}void left(){cout Java、Python、C...公共分类列表 endl;}void content(){cout Java学科视频 endl;} };//Python页面 class Python { public:void header(){cout 首页、公开课、登录...公共头部 endl;}void footer(){cout 帮助中心、交流合作、站内地图...公共底部 endl;}void left(){cout Java、Python、C...公共分类列表 endl;}void content(){cout Python学科视频 endl;} };//C页面 class Cpp { public:void header(){cout 首页、公开课、登录...公共头部 endl;}void footer(){cout 帮助中心、交流合作、站内地图...公共底部 endl;}void left(){cout Java、Python、C...公共分类列表 endl;}void content(){cout C学科视频 endl;} };void test() {//Java页面cout Java下载视频页面如下 endl;Java ja;ja.header();ja.footer();ja.left();ja.content();cout ----------- endl;//Python页面cout Python下载视频页面如下 endl;Python py;py.header();py.footer();py.left();py.content();cout ----------- endl;//C页面cout C下载视频页面如下 endl;Cpp cp;cp.header();cp.footer();cp.left();cp.content(); }int main() {test();system(pause);return 0; }继承方式实现 #includeiostream using namespace std;//公共页面 class BasePage { public:void header(){cout 首页、公开课、登录...公共头部 endl;}void footer(){cout 帮助中心、交流合作、站内地图...公共底部 endl;}void left(){cout Java、Python、C...公共分类列表 endl;} };//Java页面 class Java :public BasePage { public:void content(){cout Java学科视频 endl;} };//Python页面 class Python :public BasePage { public:void content(){cout Python学科视频 endl;} };//C页面 class Cpp :public BasePage { public:void content(){cout C学科视频 endl;} };void test() {//Java页面cout Java下载视频页面如下 endl;Java ja;ja.header();ja.footer();ja.left();ja.content();cout ----------- endl;//Python页面cout Python下载视频页面如下 endl;Python py;py.header();py.footer();py.left();py.content();cout ----------- endl;//C页面cout C下载视频页面如下 endl;Cpp cp;cp.header();cp.footer();cp.left();cp.content(); }int main() {test();system(pause);return 0; }继承方式 继承的语法class 子类 : 继承方式 父类 C中的继承方式有 public、private、protected三种 它们直接影响到派生类的成员、及其对象对基类成员访问的规则 1public公有继承 继承时保持基类中各成员属性不变并且基类中private成员被隐藏。 派生类的成员只能访问基类中的public/protected成员而不能访问private成员 派生类的对象只能访问基类中的public成员。 2protected保护性继承 继承时基类中各成员属性均变为protected并且基类中private成员被隐藏。 派生类的成员只能访问基类中的public/protected成员而不能访问private成员 派生类的对象不能访问基类中的任何的成员。 3private私有继承 继承时基类中各成员属性均变为private并且基类中private成员被隐藏。 派生类的成员只能访问基类中的public/protected成员而不能访问private成员 派生类的对象不能访问基类中的任何的成员。 #includeiostream using namespace std;class dad { public:int m_A; protected:int m_B; private:int m_C; };class son1 :public dad { public:void func(){m_A 10;//父类中的公共权限成员到子类中 依然是公共权限m_B 20;//父类中的保护权限成员到子类中 依然是保护权限//m_C 30;//父类中的私有权限成员到子类中 访问不到} };void test01() {son1 s1;s1.m_A 10;//s1.m_B 20;//son1中m_B是保护权限 类外访问不到 }class son2 :protected dad { public:void func(){m_A 10;//父类中的公共权限成员到子类中 变为保护权限m_B 20;//父类中的保护权限成员到子类中 依然是保护权限//m_C 30;//父类中的私有权限成员到子类中 访问不到} };void test02() {son2 s2;//s2.m_A 10;//son2中m_A变为保护权限 类外访问不到//s2.m_B 20;//son2中m_B是保护权限 不可访问 }class son3 :private dad { public:void func(){m_A 10;//父类中的公共权限成员到子类中 变为私有权限m_B 20;//父类中的保护权限成员到子类中 变为私有权限//m_C 30;//父类中的私有权限成员到子类中 访问不到} };void test03() {son3 s3;//s3.m_A 10;//son3中m_A变为私有权限 类外访问不到//s3.m_B 20;//son3中m_B是私有权限 类外访问不到 }class grandson3 :public son3 { public:void func(){//m_A 10;//到son3中m_A变为私有即使是儿子也访问不到//m_B 20;//到son3中m_B变为私有即使是儿子也访问不到} };int main() {test01();test02();test02();system(pause);return 0; }继承中的对象模型 #includeiostream using namespace std;class dad { public:int m_A; protected:int m_B; private:int m_C; };class son :public dad { public:int m_D; };void test01() {//父类中所有非静态成员属性都会被子类继承下去//父类中私有成员属性是被编译器给隐蔽了因此是访问不到但是确实被继承下去了cout size of son sizeof(son) endl;//16 }int main() {test01();system(pause);return 0; }输出 size of son16继承中的构造和析构顺序 子类继承父类后当创建子类对象也会调用父类的构造函数。 #includeiostream using namespace std;class dad { public:dad(){cout dad构造函数 endl;}~dad() {cout dad析构函数 endl;} };class son :public dad { public:son() {cout son构造函数 endl;}~son(){cout son析构函数 endl;} };void test01() {dad d; }void test02() {cout 继承中的构造和析构顺序如下 endl;//先构造父类再构造子类析构的顺序与构造顺序相反son s; }int main() {test01();test02();system(pause);return 0; }输出 dad构造函数 dad析构函数 继承中的构造和析构顺序如下 dad构造函数 son构造函数 son析构函数 dad析构函数总结 继承中先调用父类构造函数再调用子类构造函数析构顺序与构造相反。 继承同名成员处理方式 访问子类同名成员直接访问即可 访问父类同名成员需要加作用域。 #includeiostream using namespace std;class dad { public:dad(){m_A 100;}void func(){cout dad的func()调用 endl;}void func(int a){cout dad的func(int a)调用 endl;}int m_A; };class son :public dad { public:son(){m_A 200;}void func(){cout son的func()调用 endl;}int m_A; };//同名成员属性处理 void test01() {son s;cout son下m_A s.m_A endl;//如果通过子类对象访问到父类中同名成员需要加作用域cout dad下m_A s.dad::m_A endl; }//同名成员函数处理 void test02() {son s;s.func();//直接调用调用的是子类中的同名成员s.dad::func();//调用到父类中的同名成员函数//如果子类中出现和父类同名的成员函数子类的同名成员会隐藏掉父类中所有同名成员函数//如果想访问到父类中被隐藏的同名成员函数需要加作用域s.dad::func(100); }int main() {test01();test02();system(pause);return 0; }输出 son下m_A 200 dad下m_A 100 son的func()调用 dad的func()调用 dad的func(int a)调用总结 1、子类对象可以直接访问子类中同名成员 2、子类对象加作用域可以访问到父类同名成员 3、当子类与父类拥有同名的成员函数子类会隐藏父类中同名成员函数加作用域可以访问到父类中同名函数。 继承同名静态成员处理方式 静态成员特点 1、所有变量共享同一份数据 2、编译阶段分配内存 3、类内声明类外初始化。 静态成员和非静态成员出现同名处理方式一致 访问子类同名成员直接访问即可 访问父类同名成员需要加作用域。 #includeiostream using namespace std;class dad { public:static void func(){cout dad的static void func()调用 endl;}static void func(int a){cout dad的static void func(int a)调用 endl;}static int m_A; }; int son::m_A 100;class son :public dad { public:static void func(){cout son的static void func()调用 endl;}static int m_A; }; int son::m_A 200;//同名成员属性处理 void test01() {//通过对象访问cout 通过对象访问 endl;son s;cout son下m_A s.m_A endl;//如果通过子类对象访问到父类中同名成员需要加作用域cout dad下m_A s.dad::m_A endl;//通过类名访问cout 通过类名访问 endl;cout son下m_A son::m_A endl;//第一个::代表通过类名方式访问 第二个::代表访问父类作用域下cout dad下m_A son::dad::m_A endl; }//同名成员函数处理 void test02() {//通过对象访问cout 通过对象访问 endl;son s;s.func();//直接调用调用的是子类中的同名成员s.dad::func();//调用到父类中的同名成员函数//通过类名访问cout 通过类名访问 endl;son::func();son::dad::func();//如果子类中出现和父类同名的静态成员函数子类的同名成员会隐藏掉父类中所有同名成员函数//如果想访问到父类中被隐藏的同名成员函数需要加作用域son::dad::func(100); }int main() {test01();test02();system(pause);return 0; }总结 同名静态成员处理方式和非静态处理方式一样只不过有两种访问方式通过对象和通过类名。 多继承语法 c允许一个类继承多个类 语法class 子类 : 继承方式 父类1, 继承方式 父类2… 多继承可能会引发父类中有同名成员出现需要加作用域区分 #includeiostream using namespace std;class dad1 { public:dad1(){m_A 100;}int m_A; };class dad2 { public:dad2(){m_A 200;}int m_A; };class son :public dad1, public dad2 { public:son(){m_C 300;m_D 400;}int m_C;int m_D; };void test01() {son s;cout sizeof son sizeof(s) endl;//当父类在中出现同名成员需要加作用域区分cout dad1::m_A s.dad1::m_A endl;cout dad2::m_A s.dad2::m_A endl; }int main() {test01();system(pause);return 0; }菱形继承 概念 两个派生类继承同一个基类又有某个类同时继承这两个派生类。 这种继承称为菱形继承或者砖石继承。 菱形继承问题 1、产生二义性 2、继承两份数据资源浪费。 利用虚继承加关键字virtual可以解决菱形继承问题。 #includeiostream using namespace std;class animal { public:int m_age; };//利用虚继承 解决菱形继承的问题 //继承之前 加上关键字virtual变为虚继承 //animal类称为虚基类 class sheep :virtual public animal{};class tuo :virtual public animal{};class sheeptuo :public sheep, public tuo{};void test01() {sheeptuo st;st.sheep::m_age 18;st.tuo::m_age 28;//当菱形继承两个父类拥有相同数就需要加上作用域区分cout st.sheep::m_age st.sheep::m_age endl;cout st.tuo::m_age st.tuo::m_age endl;cout st.m_age st.m_age endl;//这份数据我们知道只有一份就可以菱形继承导致数据有两份造成资源浪费 }int main() {test01();system(pause);return 0; }
http://www.dnsts.com.cn/news/58767.html

相关文章:

  • 网站建设国际标准网站域名的用处
  • 专业网站建设找哪家好网页前端设计用什么软件
  • 网站开发工具 比较wordpress+标签消失
  • 建设网站公司是什么企业网页是什么
  • 衣柜东莞网站建设技术支持wordpress 进不去后台
  • 医疗网站前置审批医院网站如何建立
  • h5响应式音乐网站模板俄文网站策划
  • 嘉兴网站定制柳州专业网站推广公司
  • 网站被墙怎么办重庆建设厅官网
  • 网站制作网络推广关键词排名公众号怎么制作左右滑动图片
  • 毕业设计做网站 服务器怎么弄默认网站预览能能显示建设中
  • 国外优秀ui设计网站商丘网站建设运营公司
  • 十大高端网站定制设计师网站免费高清素材软件
  • icann官方网站广州企业网站设计公司
  • 什么牛网站建设廊坊网络公司网站
  • 网站建设策划基本流程建站网络公司
  • 网站内容注意事项溜冰鞋 东莞网站建设
  • 网站设置为信任站点网络规划设计师教程 下载
  • 国外刺绣图案设计网站开发一个手游需要多少钱
  • 家里做网站买什么服务器好营销公司排行
  • 广州建设网站平台企业微信crm
  • 做哪个网站比较有流量公司管理系统网站模板下载
  • 网站界面优化网页建站价格
  • 网站开发费用一般为多少钱西安做网站费用
  • 企业年金网上查询入口对网站提出的优化建议
  • 网站注册备案做外贸 网站
  • 网站制作加教程视频教程网站开发职责
  • 有哪些做任务网站做网站推广的销售电话开场白
  • 横向网站模板优化型网站是什么意思
  • 网站动态图片如何做网站建设发展历程ppt