有没有专业做挂的网站吗网站权重2的网站

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

有没有专业做挂的网站吗,网站权重2的网站,icp备案系统,html商务网站模板穷不失义#xff0c;达不离道。——孔丘《论语》 继承 1、简单理解2、继承2、1、继承的概念2、2、继承定义2、3、基类和派生类对象赋值转换2、4、继承中的作用域2、5、派生类默认成员函数2、6、继承中的特点2、6、1、友元2、6、2、静态成员2、6、3、菱形继承及菱形虚拟继承 3、…穷不失义达不离道。——孔丘《论语》 继承 1、简单理解2、继承2、1、继承的概念2、2、继承定义2、3、基类和派生类对象赋值转换2、4、继承中的作用域2、5、派生类默认成员函数2、6、继承中的特点2、6、1、友元2、6、2、静态成员2、6、3、菱形继承及菱形虚拟继承 3、总结 1、简单理解 封装继承和多态是C中不可或缺的组成部分。 封装 数据和方法放在一起把想给你访问的定义为公有不想的定义为私有。就例如一个类型放到另一个类型里面通过typedef成员函数调整封装另一个全新的类型。 继承 面对对象复用的重要方式-类设计层面上的复用 继承不算是模版对于模版来说模版只是一个单纯的一个类不同的类型数据类型的不同而已但是继承不只是类型的区别。 请看一下的图形第一个表示的是模版的含义而第二个是继承的含义。
多态 通俗来说就是多种形态具体点就是去完成某个行为不同对象去完成会产生不同的状态。如果想要更具体的案例那么现实生活中到处都是就比如买火车票不同身份的人买的价格都会不一样相同的人买几等座价格也是不一样的这就是一个比较典型的多态案例。 继承和多态更细节的地方会在下面说这里只是简单的概括一下主体。 2、继承 2、1、继承的概念 继承机制是面向对象程序设计使代码能够复用的重要手段能够允许程序员在保持原有类的特性的基础之上就行扩展增加内容和功能这样产生的类成为派生类。继承展现了面对对象程序设计的层次结构体现了由简单到复杂的认知过程。 与函数的复用相类似继承是类设计层次的复用。 class Person { public:void Print(){cout name: _name endl;cout age: _age endl;} protected:string _name peter; // 姓名int_age18; //年龄 }; // 继承后父类的Person的成员(成员函数成员变量)都会变成子类的一部分。这里体现出了 Student和Teacher复用了Person的成员。下面我们使用监视窗口查看Student和Teacher对象可 以看到变量的复用。调用Print可以看到成员函数的复用。 class Student : public Person { protected:int _stuid; // 学号 };class Teacher : public Person {protected:int _jobid; // 工号 }; int main() {Student s;Teacher t;s.Print();t.Print();return 0; }2、2、继承定义 派生类和基类的名字是根据程序员自行定义的无所谓叫什么。 其中继承方式有三种分别是privateprotect和public。 当然继承方式和访问限定符的共同作用下才能知道成员变量或者是成员函数到底有了怎么样子的改变。
总结: 基类private成员在派生类中无论以什么方式继承都是不可见的。这里的不可见是指基类的私有成员还是被继承到了派生类对象中但是语法上限制派生类对象不管在类里面还是类外面 都不能去访问它。基类private成员在派生类中是不能被访问如果基类成员不想在类外直接被访问但需要在派生类中能访问就定义为protected。 可以看出保护成员限定符是因继承才出现的。实际上面的表格我们进行一下总结会发现基类的私有成员在子类都是不可见。基类的其他 成员在子类的访问方式 Min(成员在基类的访问限定符继承方式)public protected private。使用关键字class时默认的继承方式是private使用struct时默认的继承方式是public不过最好显示的写出继承方式。在实际运用中一般使用都是public继承几乎很少使用protetced/private继承也不提倡 使用protetced/private继承因为protetced/private继承下来的成员都只能在派生类的类里 面使用实际中扩展维护性不强。 2、3、基类和派生类对象赋值转换 派生类对象 能够直接赋值给基类的对象/基类的指针/基类的引用。也能够俗称是切片或者是切割。形象的说明在赋值的时候是派生类是将整个对象就行部分切割之后再赋值给基类保证基类的正确性没有多余的部分。
基类对象不能赋值给派生类。很显而易见的是基类的成员并没有多余派生类如果赋值给派生类一些部分显而易见的会产生问题包括但不限于随机赋值也指针的出现。 2、4、继承中的作用域 每一个成员都有自己的作用域函数有函数的作用域变量有变量的作用域乃至main函数也有自己的作用域所以继承中的作用域也很重要。 1、继承中的基类和派生类都有独立的作用域。 2、当子类和父类中存在同名函数时子类成员将会屏蔽父类对同名函数的直接访问这种情况也叫做隐蔽也叫重定义 3、成员名相同就构成隐蔽 4、在设计过程中继承体系最好不要定义同名的成员 这段代码中包含了函数名相同时出现的隐蔽现象同时也说明了如果隐蔽了该如何调用基类中的成员函数。 #includeiostream #includestring using namespace std; class Person { protected:string _name 小李子; // 姓名int _num 111;// 身份证号 }; class Student : public Person { public:void Print(){cout 姓名: _name endl;cout 身份证号: Person::_num endl;cout 学号: _num endl;} protected:int _num 999; // 学号 }; void Test() {Student s1;s1.Print(); }; int main() {Test();return 0; }这样的结果也能够说明隐蔽的效果和消除隐蔽的方法。 需要注意的是这里是隐蔽而不是函数重载重载和隐蔽是两码事 2、5、派生类默认成员函数 派生类的构造函数必须调用基类的构造函数初始化基类的那一部分成员。如果基类没有默认 的构造函数则必须在派生类构造函数的初始化列表阶段显示调用。派生类的拷贝构造函数必须调用基类的拷贝构造完成基类的拷贝初始化。派生类的operator必须要调用基类的operator完成基类的复制。派生类的析构函数会在被调用完成后自动调用基类的析构函数清理基类成员。因为这样才能保证派生类对象先清理派生类成员再清理基类成员的顺序。派生类对象初始化先调用基类构造再调派生类构造。派生类对象析构清理先调用派生类析构再调基类的析构。因为后续一些场景析构函数需要构成重写重写的条件之一是函数名相同(这个我们后面会讲解)。那么编译器会对析构函数名进行特殊处理处理成destrutor()所以父类析构函数不加 virtual的情况下子类析构函数和父类析构函数构成隐藏关系。 构造时基类构造再到派生类。析构时显示派生类析构然后再是基类。 2、6、继承中的特点 2、6、1、友元 在基类的定义中可能存在友元友元的存在在继承中又有什么样的特性呢 首先友元是不能够继承的 简单点意思就是你爸爸的朋友不是你的朋友。基类的友元不能够访问子类的私有和保护成员。 2、6、2、静态成员 如果在基类中定义了一个static静态成员那么整个继承体系中只会有一个这样的成员无论多少个子类访问的都是同一个static成员。 2、6、3、菱形继承及菱形虚拟继承 在刚刚讲过的所有的案例中我们的继承都是按照类似线性的关系来进行继承但是难免在现实中存在多继承的情况出现。所以一个典型的菱形继承就值得我们来了解并且来分析其中可能存在的问题。 这样子的菱形继承就会存在问题导致一个数据到最后一个类的时候可能会有两个不同的值不知道该怎么继承所以菱形继承的问题就是在 1数据冗余 2二异性 虽然解决二异性的问题能够在数据前加上限定符来特指某个类中的数据但是对于数据冗余的问题还是没有解决。 所以这个时候就需要通过virtual虚继承的方式来解决问题。 virtual在继承过程中就需要加上如不是最后的时候才加上。 从内存中能够观察到D对象内部AB与C到底怎么储存的能够类似于类中的函数一样将A中的a放在最后一个类似于公共的区域让a只存在一个改变修改相同的一个a。 那么其中B与C第一行中的那串地址又能代表什么呢为什么每个的第一行都是一串奇奇怪怪的地址这究竟是怎么做到能够找到a的地址的呢 其实就是因为这第一行的地址才能够让我们找到具体的位置在哪结下来我们将这串地址放在内存中寻找一下看看是什么。 也就是这个样子找到的位置存放的位置之后可以看到存放的第二个地址的地方的数就是按照从当前位置找到公共位置的地址的距离。这样也就说得通两个地址找到A的位置并且能够得到a的值。 用专业的话来说也就是通过BC两个指针指向一张表这两个表就叫虚基表两个指针就叫虚基表指针。虚基表中存的偏移量可以找到A。 3、总结 其实继承中复杂的大多是是多继承多继承中又存在菱形继承有了菱形继承就又会有菱形虚拟继承有了菱形虚拟继承底层就会变的复杂。所以一般来说都是不设计多继承即使有着多继承也尽量不设计菱形继承否则在复杂度以及性能上都会存在问题。 并且大多数情况之下继承也可以换成组合的方式来实现。 都能用选组合其他情况适合什么用什么。 继承的缺点还存在着高耦合的问题。当继承中改变了就会改变后续继承的偶有元素这样也会造成不少的麻烦会对后期的修改有较大部分的影响导致牵一发而动全身的后果。