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

企业网站需要哪些模块区校合作网站建设方案

企业网站需要哪些模块,区校合作网站建设方案,腾讯邮箱网页登录入口,广州安全教育平台入口登录处目录 1.隐藏 1.1隐藏的概念 1.2隐藏的两种方式 2.继承与友元 3、继承与静态成员 4.单继承和多继承 4.1单继承 4.2多继承 5.菱形继承 问题1:冗余性 问题2:二义性 6.虚拟继承 7.总结 1.隐藏 1.1隐藏的概念 在 C 中,继承是一种机制…

目录

1.隐藏

1.1隐藏的概念

1.2隐藏的两种方式

2.继承与友元

3、继承与静态成员

4.单继承和多继承

4.1单继承

4.2多继承

5.菱形继承

问题1:冗余性

问题2:二义性

6.虚拟继承

7.总结


1.隐藏

1.1隐藏的概念

在 C++ 中,继承是一种机制,使得子类可以继承父类的成员变量和成员函数。然而,当子类中出现和父类同名的成员变量或成员函数时,会发生一种特殊的现象,即隐藏。

隐藏是指:如果子类中出现了与父类同名的成员变量或成员函数,则子类中的这个成员会“隐藏”父类中的同名成员,使得父类中的同名成员在子类中不可见。

1.2隐藏的两种方式

成员变量隐藏:顾名思义是类中的成员函数被隐藏了

class Parent {
public:int W;
};class Child : public Parent {
public:int W; // 此处的 W 会隐藏 Parent 中的 W
};int main() {Child c;c.W = 10; // 此处修改的是 Child 中的 W,而不是 Parent 中的 Wreturn 0;
}

成员函数隐藏:和成员变量隐藏一样,成员函数被隐藏

class Parent {
public:void func() {cout << "Parent::func()" << endl;}
};class Child : public Parent {
public:void func() {cout << "Child::func()" << endl;}
};int main() {Child c;c.func(); // 此处调用的是 Child 中的 func(),而不是 Parent 中的 func()return 0;
}

2.继承与友元

在C++中,友元关系不能被继承,因为友元关系是独立于类定义的,并不是类的成员。因此,如果在父类中声明了一个友元函数或友元类,子类无法继承这种关系。

class Student;class Person{public:friend void Display(const Person& p, const Student& s);protected:string _name; // 
姓名};class Student : public Person{protected:int _stuNum; // 
学号};void Display(const Person& p, const Student& s){cout << p._name << endl;cout << s._stuNum << endl;}int main(){Person p;Student s;// 
编译报错:
error C2248: “Student::_stuNum”: 
⽆法访问protected 
成员// 
解决⽅案:
Display
也变成
Student 
的友元即可Display(p, s);return 0

3、继承与静态成员

在 C++ 中,类可以包含静态成员变量和静态成员函数,其中静态成员变量属于类本身,而不是类的某个对象,因此它们可以在不创建类对象的情况下被访问。

当一个类继承另一个类时,子类可以继承其父类的静态成员,并且可以在子类中重新定义这些静态成员。在这种情况下,子类和父类各自拥有自己的静态成员变量,它们之间没有任何关系。

#include<iostream>
using namespace std;class Parent {
public:static int a;
};int Parent::a = 1000;      //静态成员的定义只能在类外进行class Child : public Parent {
public:static int a;      //类中只能声明静态成员
};int Child::a = 2000;       //静态成员的定义只能在类外进行int main() {cout << Parent::a << endl;    //输出1000cout << Child::a << endl;     //输出2000return 0;
}

此外,静态成员函数也可以继承,并且可以在子类中重新定义。在子类中重新定义父类的静态成员函数时,子类的静态成员函数会隐藏父类的静态成员函数,因此如果在子类中需要调用父类的静态成员函数,需要使用作用域运算符 :: 来显式地调用。

4.单继承和多继承

4.1单继承

单继承是指一个类只能继承自一个基类。这意味着派生类只能有一个直接的基类。

如下代码所示:

class Base {
public:void baseFunction() {cout << "Base function" << endl;}
};class Derived : public Base {
public:void derivedFunction() {cout << "Derived function" << endl;}
};

4.2多继承

多继承允许一个类继承自多个基类。这意味着派生类可以有多个直接的基类。

class Base1 {
public:void base1Function() {cout << "Base1 function" << endl;}
};class Base2 {
public:void base2Function() {cout << "Base2 function" << endl;}
};class Derived : public Base1, public Base2 {
public:void derivedFunction() {cout << "Derived function" << endl;}
};

5.菱形继承

 C++中的菱形继承是指在类的继承关系中,存在两个或更多个直接或间接的基类,它们之间形成了一个类似菱形的结构。这种继承结构通常出现在多层继承中,当一个派生类同时从两个不同的基类继承到了同一个基类时,就可能导致问题。

问题1:冗余性

主要体现在代码的重复。在菱形继承中,派生类会继承两个基类的所有公共和私有成员。如果这些成员在两个基类中定义了相同的实现,那么在派生类中可能会有重复的代码,这不仅增加了代码量,还可能导致维护困难,因为需要在所有相关的实现中同步更新。

问题2:二义性

二义性是指在菱形继承的情况下,派生类可能会有两个或更多的基类提供了相同的函数或数据成员,这在调用时会导致编译器无法确定调用哪个版本。例如,如果基类A和B都有一个同名的函数,而在派生类中没有明确指定调用哪一个,就会产生二义性错误。

class Person
{
public :string _name ; // 姓名
};
class Student : public Person
{
protected :int _num ; //学号
};
class Teacher : public Person
{
protected :int _id ; // 职工编号
};
class Assistant : public Student, public Teacher
{
protected :string _majorCourse ; // 主修课程
};
void Test ()
{// 这样会有二义性无法明确知道访问的是哪一个Assistant a ;
a._name = "peter";
// 需要显示指定访问哪个父类的成员可以解决二义性问题,但是数据冗余问题无法解决a.Student::_name = "xxx";a.Teacher::_name = "yyy";
}

6.虚拟继承

下面我们来讲解一种解决上面问题的方法——虚拟继承

虚继承是一种特殊的继承方式,用于解决菱形继承中的冗余性和二义性问题

class BaseClass {
public:int var;
};class LeftChild : public virtual BaseClass {
public:// ...
};class RightChild : public virtual BaseClass {
public:// ...
};class FinalChild : public LeftChild, public RightChild {
public:// ...
};

在上面的示例中,LeftChild 和 RightChild 都virtually继承自 BaseClass,这样在 FinalChild 继承 LeftChild 和 RightChild 时,就不会再继承 BaseClass 的两份副本,避免了冗余性问题。此时,BaseClass 的成员变量 var 在 FinalChild 中只有一份,并且不会发生二义性问题。

总之,C++ 通过虚继承解决了菱形继承中的冗余性和二义性问题,使得在使用继承时更加灵活和安全。

7.总结

以上是C++继承博主学习的全部内容,可能不全但是覆盖了继承的几乎知识点,后期主播会积极补充有关继承其他有关知识点,谢谢大家的关注和支持!


文章转载自:

http://Tz2eD3MH.mjgLk.cn
http://G9KZCHqC.mjgLk.cn
http://yH22EatB.mjgLk.cn
http://PQkFW0gL.mjgLk.cn
http://SwPJUgKp.mjgLk.cn
http://hZD0Kgy7.mjgLk.cn
http://3pgNi5ys.mjgLk.cn
http://y934yKav.mjgLk.cn
http://bDOMUxRl.mjgLk.cn
http://VaalawZs.mjgLk.cn
http://04wfKI7A.mjgLk.cn
http://2UTWfdfp.mjgLk.cn
http://ZkYvx3DN.mjgLk.cn
http://p2ZD0ioX.mjgLk.cn
http://E3EzwTk8.mjgLk.cn
http://M33plJj1.mjgLk.cn
http://8MEj1dRV.mjgLk.cn
http://5IcQfwF4.mjgLk.cn
http://D0HXSn0t.mjgLk.cn
http://NUu35viM.mjgLk.cn
http://d3rxbatR.mjgLk.cn
http://9ghmKD7S.mjgLk.cn
http://JBreHZ5w.mjgLk.cn
http://nvpD8wNa.mjgLk.cn
http://ihyWNCWj.mjgLk.cn
http://GEemgGIW.mjgLk.cn
http://ifojxb8k.mjgLk.cn
http://MzZFGRjb.mjgLk.cn
http://IBI6Fl2p.mjgLk.cn
http://RVhD8g3Q.mjgLk.cn
http://www.dtcms.com/wzjs/703888.html

相关文章:

  • 正能量网站推荐不需要下载网站建设自建服务器
  • 毕业设计做旅游网站网页升级紧急通知 2022狼
  • 网站开发的进度控制计划表四川做网站公司
  • 长沙网站建设大概多少钱怎么推广自己的qq群
  • 番禺区网站建设哪家好wordpress主题手机制作
  • 黄埔网站建设苏州网站建设熊掌号
  • 公司网站是如何搭建的大名做网站
  • 沈阳做网站的设计公司哪家好电子商务网站的建设与流程
  • 什么程序做网站动漫设计与制作属于什么专业类别
  • 芦苞网站建设支付宝手机网站支付前端怎么做
  • 网站推广员工作咋样百度打开百度搜索
  • 自己做的网站谁来维护网站开发搜索功能怎么实现
  • 大连网站建设网站django做网站
  • wordpress在线优化揭阳新站seo方案
  • 建设工程教育网站网络公司网站
  • 网站建设硬件需求用ai做网站
  • 做一款推荐类的网站信诚网络公司网站
  • 俄文网站引擎个人做seo怎么赚钱
  • 咨询聊城网站建设合肥网站建设步骤
  • 服务器上建设网站郑州建设工程协会网站
  • 东营网站开发招聘伍佰亿网站
  • 网站设网页设计WordPress注册添加
  • 海南省住建设厅网站报监管局审核网站名称
  • 电话开发网站建设话术滨州五学一做考试网站
  • 网站排名怎么提升浅谈全球五金网电子商务网站建设
  • wordpress资源站邢台123生活信息
  • 做二手网站威海市住房和城乡建设局网站
  • 中企动力做网站费用申请网站建设经费的请示
  • 昆明北京网站建设网站建设的心得与体会
  • 微信 app 微网站 整合h5自助建站系统