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

wordpress可以建哪些网站网站推广具体内容简要说明

wordpress可以建哪些网站,网站推广具体内容简要说明,广州制作网站服务,全州建设完小网站内容一览 前言继承的概念及定义继承的意义继承关系及访问限定符父类和子类对象之间的转化继承后的作用域继承与有元继承与静态成员多继承继承和组合的区别#xff1a;继承的总结和反思 前言 面向对象的三大特性#xff1a;封装继承和多态#xff0c;这三种特性优者很紧密地联… 内容一览 前言继承的概念及定义继承的意义继承关系及访问限定符父类和子类对象之间的转化继承后的作用域继承与有元继承与静态成员多继承继承和组合的区别继承的总结和反思 前言 面向对象的三大特性封装继承和多态这三种特性优者很紧密地联系但是也有很大的区别。  对于刚接触面度对象编程风格的小白你可能不了解继承到底是用来做什么的以及为什么叫做继承接下来我就带你仔细了解继承的作用以及注意事项。 继承的概念及定义 继承是代码可以复用的重要手段术语表达继承就是子类继承父类的属性和方法大白话就是子承父业子类可以拥有父类除了私有以外的成员和方法还可以有自己的属性父类通常也叫做基类子类有时也叫做派生类。  继承呈现了面向对象程序设计的层次结构体现了由简单到复杂的认知过程在之前我们在程序中的复用通常是函数复用传入不同的参数函数就可以产生不同的响应但是在学完继承和多态后代码的复用就不仅仅局限于函数的复用继承就是类设计层次的复用。 举一个例子理解一下 class animal { public:void Paint(){cout age endl;} protected:int age10; };class cat :public animal { protected:int price 500; };动物是一个较大的概念在动物的种类中有猫小狗等等他们具有都是动物的特点也与属于他们自己的特点继承animal后cat就是animal的子类animal就是cat的父类。 如上图所示如果用子类构造出一个对象子类也包含了父类的成员和方法。 此时用父类函数构造出来的子类就也可以使用父类的方法。 继承的意义 现在我们要思考了为什么我们需要继承呢向上变得例子来看继承并没有带来太大的优化这样你就大错特错了如果仅仅只有两三个类在每个类的属性和方法都确定的请款下确实某有必要实现继承但是在现实中通常是一整个系统程序往往有很多类且大部分类都是具有相似部分的如果我们每个类都丹毒重新写不仅代码臃肿而且工作量大出bug不易查寻。  有了继承之后我们可以将部分类中相似的部分提取出来作为父类在继承父类后添加自己新的属性和方法这样不仅可以大大减少代码量还易于维护代码结构清晰可见。 继承关系及访问限定符 C中有三种访问限定符分别是public,private,protected继承方式也就有了三种最常用的就是public继承。 如上图所示 私密性publicprotectedprivate。  刚开始时是没有保护这个限定符的正式出现继承和多态之后才加上的父类的私有子类不能访问但父类的保护子类也可以访问。 父类和子类对象之间的转化 子类的对象可以赋值给父类的对象/父类的指针/父类的引用这里有一种很形象的说法就是切片或者切割子类的对象继承了父类所以包含父类的一部分在赋值给父类对象时将子类父类的一部分切割给父类对象。 切记只有子类对象可以赋值给父类。 cat c;animal a c;//子类对象赋值给父类animal* a c;//赋值子类对象的指针animal k c;//赋值子类对象的引用赋值切片的过程类似于 继承后的作用域 继承后子类和父类仍然是两个独立的作用域。所以要注意这个问题如果子类和父类包含有同名函数这两个函数之间的关系不是重载重载要求两个函数在同一作用域而是隐藏子类会隐藏父类的同名函数。  要注意哈在父子类中只要两函数的名称相同就构成隐藏。但是在实际中最好不要在父子类中定义同名函数不然会容易混淆。  如果构成隐藏后我们调用该函数就调用的是子类的虚函数如果我们想要调用父类的虚函数就要加上作用域在子类成员函数中可以使用基类::基类成员显式访问。 class person { public:void func1(){cout person::func1 endl;} }; class student : public person { public:void func1(){cout func1 endl;} };int main() {person p;student s;p.func1();s.func1();return 0; }运行后发现父类调用该函数使用的父类中的子类调用就调用子类中的函数子类将父类的同名函数进行隐藏这样搞调用时就不会产生歧义。 接下来探索探索继承后子类的成员函数和弗雷德成员函数之间的关系。 1首先子类的构造函数必须先调用父类的构造函数初始化子类中所包含父类的一部分如果父类中没有默认的构造函数就必须在子类构造函数的初始化列表进行初始化。 2. 派生类的拷贝构造函数必须调用基类的拷贝构造完成基类的拷贝初始化。 3. 派生类的operator必须要调用基类的operator完成基类的复制。 4. 派生类的析构函数会在被调用完成后自动调用基类的析构函数清理基类成员。因为这样才能保证派生类对象先清理派生类成员再清理基类成员的顺序。 5. 派生类对象初始化先调用基类构造再调派生类构造。 6. 派生类对象析构清理先调用派生类析构再调基类的析构。 通过调试来带领大家观察构造及西狗屎的顺序。  可以发现在构造子类对象时再初始化列表首先调用父类的构造函数在析构时首先调用子类的析构函数然后再调用父类的析构函数。 继承与有元 我们知道一个类的有元可以在类外使用类中的变量和方法那么父类的友元函数能被继承吗  答案是不能友元关系不能被继承基类的有缘不能访问子类的私有和保护。 举一个例子 class A { public: private:int _a2; }; class B:public A { public:int _b 0;friend void Printf(); }; void Printf(B b,A a) {cout b._b;cout a.a; } int main() {A a;B b;Printf(b,a);return 0; }在子类中创建一个友元函数友元函数只可以访问而不是父类的友元函数所以父类中的保护和私有我们这个友元函数不能访问。 继承与静态成员 基类定义了static静态成员整个继承体系里面只有一个这样的成员无论有多少个子类静态成员就只有这一个。 class A { public:int _a 2;static int aa; }; int A::aa1; class B :public A { public:int _b 0; }; int main() {A a;B b;A::aa;couta.aaendl;a.aa;cout b.aa;return 0; }由于两个类中的静态变量只有一份所以我们可以直接用类加作用域直接访问也可以用对象进行访问。 如图 多继承 单继承一个子类只有一个直接父类时称这个继承关系为单继承。 例如 多继承一个子类同时继承多个父类这种关系称为多继承 有了多继承就会产生一种特殊的情况那就是菱形继承 这种情况就会产生特殊的影响  假如A中有一个元素那么BC分别继承了A然后D再次继承BCD中就包含了两份这个元素。如果我们去调用D中A的元素假设为_a就会出现二义性。  不仅如此我们D类中包含了两份_a还会浪费内存。我们可以使用作用域去看。 如何解决数据重复问题呢 我们可以使用关键字virtual。 使用虚拟继承就可以解决问题 虚拟继承可以解决菱形继承的二义性和数据冗余的问题。 关键字virtual在多态时也会用到在这里是修饰继承了最上边的父类的子类。在上边的例子中就是修饰B和C。 正如上图也是菱形继承的一种我们要在距离被继承两次的父类的下一层子类加virtual使其变成虚拟继承。 但是还是那句话我们在实际写程序中尽量不要写菱形继承。 如下图 此时再来观察在内存中是如何解决这件问题的。 借用上边的例子 我们来调试运行看一看。  可以发现不管我们调用B还是C对象中的_a元素都是调用的同一个来看一看底层如何实现的以及为什么将A类中的_a放在最后的位置。 我们在X86的环境下来观察  可以发现在B和C对象前都有一个指针这个指针里存的就是该位置到_a的距离当我们想要修改A中_a的值时就会找到该位置距离A对象中_a的长度然后修改A中_a的值。  将A中数据放在末尾就是为了统一管理方便每一个继承该父类的子类通过指针找到该位置。 继承和组合的区别 public是一种is-a的关系也就是说每个派生类对象都是一个基类对象。 组合是一种has-a的关系假设B组合了A每个B对象中都会有一个A对象。 优先使用对象组合而不是类继承。  继承允许你根据基类的实现来定义派生类的实现。这种通过生成派生类的复用通常被称 为白箱复用(white-box reuse)。术语“白箱”是相对可视性而言在继承方式中基类的 内部细节对子类可见 。继承一定程度破坏了基类的封装基类的改变对派生类有很 大的影响。派生类和基类间的依赖关系很强耦合度高。  对象组合是类继承之外的另一种复用选择。新的更复杂的功能可以通过组装或组合对象 来获得。对象组合要求被组合的对象具有良好定义的接口。这种复用风格被称为黑箱复 用(black-box reuse)因为对象的内部细节是不可见的。对象只以“黑箱”的形式出现。 组合类之间没有很强的依赖关系耦合度低。优先使用对象组合有助于你保持每个类被 封装。  实际尽量多去用组合。组合的耦合度低代码维护性好。不过继承也有用武之地的有 些关系就适合继承那就用继承另外要实现多态也必须要继承。类之间的关系可以用 继承可以用组合就用组合。 继承的总结和反思 继承大大增加了我们代码的复用性有人说C语法复杂其实就是多继承的问题比建议设计出多继承java就吸取了C的教训没有引入多继承如果使用多继承不小心设计出了菱形继承那会在复杂度和时间上都产生问题。 本文结束如果有问题或者有疑问就直接评论哦回复很快。
http://www.pierceye.com/news/652342/

相关文章:

  • 长沙 外贸网站建设公司排名传统文化传播公司网站建设
  • 站群seo技巧1 企业网站的一般内容是什么
  • 广东省城乡建设厅投诉网站首页wordpress posts
  • 泰安建设厅网站怎样给公司做一个网站
  • 扶贫网站开发的目的是什么2023年舆情分析报告
  • 河南建设银行处理违章网站网站做支付需要准备什么东西吗
  • 网站设置不能通过链接访问比较好的源码网站
  • 深圳做网站联雅空间业务建设网站
  • 合肥企业网站设计制作莱芜杂谈 莱芜话题
  • 大圣网站建设为什么不推荐大家去外包公司
  • 做网站手机版wordpress如何换成经典编辑器
  • 建设网站的知识企业做网站设计的
  • 西安网站排名分析软文营销把什么放在第一位
  • 织梦手机网站模板删除不了宁波网站建设服务商
  • 深圳网站建设最专业网站seo技术
  • 定制网站开发一般多少钱郑州哪家公司做网站好
  • jsp做的网站效果给你一个网站你怎么做的吗
  • 怎样做网站海报wordpress最近怎么又是5.0更新
  • 淡水网站建设哪家便宜设计网页分析
  • 长沙多迪php网站开发培训学校小说榜单首页百度搜索风云榜
  • 门户网站建设计入什么科目网站备案 时间更新
  • 企业建网站租用服务器好还是买一个好wordpress 预订插件
  • 电气建设网站下载的asp网站怎么打开
  • 南阳网站建设icp备手机应用商店免费下载
  • 网站开发测量像素工具网站模板包含哪些内容
  • 南昌网站排名优化费用湖北公众号定制开发
  • 个人主页自助建站凡科网干嘛的
  • 网站后台上传图片不显示品牌营销咨询公司
  • 卖房网站母亲节做什麽活动从传播的角度
  • 永久免费的cad软件seo咨询