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

美度手表网站校园门户网站系统建设方案

美度手表网站,校园门户网站系统建设方案,看广告赚钱一天50元,建设网站论坛都需要哪些工具继承的概念 继承(inheritance)机制是面向对象程序设计使代码可以复用的重要的手段#xff0c;它允许程序员在保持原有类特性的基础上进行扩展#xff0c;增加功能。继承呈现了面向对象程序设计的层次结构#xff0c;之前我们接触的复用都是函数复用#xff0c;今天我们所讨…继承的概念 继承(inheritance)机制是面向对象程序设计使代码可以复用的重要的手段它允许程序员在保持原有类特性的基础上进行扩展增加功能。继承呈现了面向对象程序设计的层次结构之前我们接触的复用都是函数复用今天我们所讨论的继承是类设计层次的复用。 子类继承父类的成员后父类的 成员函数 和 成员变量 都会变成子类的一部分其中父类的成员函数与子类的成员函数使用的是同一个函数(构造函数除外)成员变量是每个类各自拥有相当于把成员变量重新拷贝了一份。 注意 友元关系不能被继承 基类若定义了static静态成员则整个继承体系里面只有一个这样的成员。 继承方式 根据继承方式和访问限定符共有九种继承方式 类成员/继承方式public继承protected继承private继承基类的public成员派生类的public成员派生类的protected成员派生类的private成员基类的protected成员派生类的protected成员派生类的protected成员派生类的private成员基类的private成员在派生类中不可见在派生类中不可见在派生类中不可见 通过上面的表格可以发现基类的其他成员在子类的访问方式 Min(成员在基类的访问限定符继承方式)public protected private。比如基类的public成员 与 private继承方式因为public private所以在派生类的访问方式为private。 基类private成员在派生类中是不能被直接访问的protected的意义就是基类成员不能被类外的对象直接访问但是可以被派生类直接访问。 class Person { public:void Print(){cout age: _age endl;} private:int _age 18; // 年龄 };class Student : public Person { protected:int _stuid; // 学号 }; int main() {// 虽然Student类继承了Person类但是_age被Person设为私有// 所以Student不能直接访问_age, 但可以通过调用父类的成员函数间接访问Student st;st.Print(); // 结果为age:18 } 基类与派生类的复制兼容转换 派生类对象 可以赋值给 基类的对象 / 基类的指针 / 基类的引用。叫做切片或者切割。基类对象不能赋值给派生类对象 ps.    Student类继承Person类 继承中的作用域 在继承体系中基类和派生类都有独立的作用域。子类和父类中有同名成员子类成员将屏蔽父类对同名成员的直接访问这种情况叫隐藏也叫重定义。在子类成员函数中可以使用 基类::基类成员 显示访问如果是成员函数的隐藏只需要函数名相同就构成隐藏 下面有一道练习题大家可以试着做一下 class A{ public:void fun()cout func() endl; }; class B : public A { public:void fun(int i)cout func(int i)- iendl; };int main(){B b;b.fun();return 0; }//不定项选择 // A选项fun构成重载 // B选项fun构成隐藏 // C选项编译报错 // D选项运行报错 答案BC 解析A选项函数名相同而且在同一作用域才构成重载B选项正确C选项对象b首先会去派生类里面寻找fun如果派生类没有才回去基类中寻找。而本题中派生类中有fun函数而且需要传参才可以但是b对象调用时却没有传参所以会编译报错故而正确D选项先编译后运行编译都报错了根本进行不到运行这一步。  派生类的默认成员函数 “默认”的意思就是指我们不写编译器会为我们自动生成一个那么在派生类中这几个默认成员函数是如何生成的呢 派生类的构造函数 必须调用 基类的构造函数 初始化 基类的那一部分成员。如果基类没有默认的构造函数则必须在派生类构造函数的初始化列表阶段显示调用。派生类的拷贝构造函数必须调用基类的拷贝构造完成基类的拷贝初始化。派生类的operator必须要调用基类的operator完成基类的复制。派生类的析构函数会在被 调用完成后 在自动调用 基类的析构函数 清理基类成员。因为这样才能保证派生类对象 先清理派生类成员 再 清理基类成员的顺序。 // 派生类的拷贝构造赋值与之类似 class Person { public:Person(const char* name ): _name(name){}Person(const Person p): _name(p._name){} protected:string _name; }; class Student : public Person { public:Student() default; // 强制生成默认构造// s为子类对象Student(const Student s) // 拷贝构造// 切割切割出子类中父类的那一部分。调用 基类的拷贝构造 来完成基类的拷贝初始化: Person(s) , _num(s._num){} protected:int _num; }; 派生类的默认成员函数可以分为三个部分父类的那一部分、自定义类型部分、内置类型部分。对于父类那一部分会调用父类对象相应的默认成员函数(复用)、自定义类型部分调用自定义类型的默认成员函数、内置类型不做处理。 菱形继承与菱形虚拟继承 单继承一个子类只有一个直接父类时称这个继承关系为单继承 多继承一个子类有两个或以上直接父类时称这个继承关系为多继承 菱形继承 两个派生类继承同一个基类而同时又有某个类 同时继承了这两个派生类这种继承被称为菱形继承菱形继承是多继承的一种特殊情况。 从上图可以看出菱形继承存在数据冗余和二义性的问题。为了解决这个问题后续又提出了菱形虚拟继承的概念即在上例中的Student和Teacher的继承Person时使用虚拟继承即可解决问题。 请看代码 class Person { public :string _name ; // 姓名 }; class Student : virtual public Person // 虚拟继承 { protected :int _num ; //学号 }; class Teacher : virtual public Person // 虚拟继承 { protected :int _id ; // 职工编号 }
http://www.w-s-a.com/news/817888/

相关文章:

  • 视频网站用什么cms网络运营与维护主要做什么
  • 设计网站主页要多少钱赣州制作网站百度
  • 什么叫高端网站定制网站收录大幅度下降
  • 汝城县网站建设公司aspx网站实例
  • 专业微网站营销diywap手机微网站内容管理系统
  • 盗版做的最好的网站温州logo设计公司
  • 网站建设 中山南充微网站建设
  • 企业网站更新什么内容免费设计软件下载
  • 夏天做哪些网站能致富做网站怎么每天更新内容
  • 个人网站的设计与开发网站建设流程中哪些部分比较重要
  • 招聘网站如何建设中国计算机网络公司排名
  • 工信部网站备案规定厦门在线制作网站
  • 商丘网站公司智联招聘手机app下载
  • 江西专业南昌网站建设中国专业的网站建设
  • 物流企业网站建设方案招标网站有哪些
  • 网站建设服务中企动力建筑工程网络进度计划备注填写范例
  • 电子商务网站开发与建设试卷php网站开发专业
  • 运城网站制作路90江苏省网站备案系统
  • 唐山做企业网站实体门店管理系统
  • 网站优化推广教程深圳网站建设世纪前线
  • 网站建设专家哪家好兰州网络推广执行
  • 广东住房和城乡建设厅网站王芃增加网站收录
  • 北京网站建设手机app电子商务网红营销的劣势
  • 网站 营销型wordpress获取4条文章标题
  • 浦东区建设工程监督网站建立全国统一的突发事件信息系统
  • 做网站需要基础吗重庆市造价信息网
  • 我要建设公司网站大连培训网站建设
  • 网站建设校长信箱设计方案小程序报价开发
  • 电子网站建设ppt模板营销策划方案怎么写?
  • 什么网站收录排名最高济南能源建设网站