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

江苏省建设网站wordpress第三方评论

江苏省建设网站,wordpress第三方评论,安康那个公司做网站好,四川建设厅电话网站1.继承的概念及定义 1.1继承的概念 继承 (inheritance) 机制是面向对象程序设计 使代码可以复用 的最重要的手段#xff0c;它允许程序员在 保 持原有类特性的基础上进行扩展 #xff0c;增加功能#xff0c;这样产生新的类#xff0c;称派生类。继承 呈现了面向对象 …1.继承的概念及定义 1.1继承的概念 继承 (inheritance) 机制是面向对象程序设计 使代码可以复用 的最重要的手段它允许程序员在 保 持原有类特性的基础上进行扩展 增加功能这样产生新的类称派生类。继承 呈现了面向对象 程序设计的层次结构 体现了由简单到复杂的认知过程。以前我们接触的复用都是函数复用 继 承是类设计层次的复用。 大家都知道c的三大特性就是面向对象继承多态。那么继承最重要的特点就是代码的复用。接下来我来带大家了解一下继承的概念。 下面我写了三个类Student类和Teacher类都继承了Person类当我们调用监视窗口可以看到Person类里面的成员变量和成员函数在Student类和Teacher类中都有并且Student类和Teacher类还多了自己的成员变量。 class Person { public:void Print(){cout name: _name endl;cout age: _age endl;} protected:string _name xxx;int _age 18; };class Student : public Person { protected:int _stuid; // 学号 };class Teacher : public Person { protected:int _jobid; // 工号 };int main() {Student s;s.Print();Teacher t;t.Print();return 0; } 1.2 继承定义 1.2.1定义格式 下面我们看到 Person 是父类也称作基类。 Teacher是子类也称作派生类。 继承后父类的Person的成员成员函数成员变量都会变成子类的一部分。 1.2.2继承关系和访问限定符 1.2.3继承基类成员访问方式的变化 总结 1. 基类 private 成员在派生类中无论以什么方式继承都是不可见的。这里的 不可见是指基类的私 有成员还是被继承到了派生类对象中但是语法上限制派生类对象不管在类里面还是类外面 都不能去访问它 。 2. 基类 private 成员在派生类中是不能被访问如果基类成员不想在类外直接被访问但需要在派生类中能访问就定义为protected 。 可以看出保护成员限定符是因继承才出现的 。 3. 实际上面的表格我们进行一下总结会发现基类的私有成员在子类都是不可见。基类的其他成员在子类的访问方式 Min( 成员在基类的访问限定符继承方式 ) public protected private 。 4. 使用关键字 class 时默认的继承方式是 private 使用 struct 时默认的继承方式是 public 不过 最好显示的写出继承方式 。 5. 在实际运用中一般使用都是 public 继承几乎很少使用 protetced/private 继承 也不提倡 使用 protetced/private 继承因为 protetced/private 继承下来的成员都只能在派生类的类里面使用实际中扩展维护性不强。 当我把Student变成保护继承之后就会发生报错因为Print就变成了保护函数访问不了变量。  2.基类和派生类对象赋值转换 派生类对象 可以赋值给 基类的对象 / 基类的指针 / 基类的引用 。这里有个形象的说法叫切片 或者切割。寓意把派生类中父类那部分切来赋值过去。 基类对象不能赋值给派生类对象。 3.继承中的作用域 1. 在继承体系中 基类 和 派生类 都有 独立的作用域 。 2. 子类和父类中有同名成员 子类成员将屏蔽父类对同名成员的直接访问这种情况叫隐藏 也叫重定义。 在子类成员函数中可以 使用 基类 :: 基类成员 显示访问 3. 需要注意的是如果是成员函数的隐藏只需要函数名相同就构成隐藏。 4. 注意在实际中在 继承体系里 面最好 不要定义同名的成员 。 我在Person类和Student类都写了一个fun函数这两个fun函数只有参数不同那么是构成重载吗不是这两个函数构成隐藏 为什么呢因为两个类的作用域是独立的而构成重载的前提是同一作用域。 如果出现基类和派生类定义了同名成员可以使用使用 基类::基类成员 显示访问。 4.派生类的默认成员函数 6 个默认成员函数 “ 默认 ” 的意思就是指我们不写编译器会变我们自动生成一个那么在派生类 中这几个成员函数是如何生成的呢 1. 派生类的构造函数必须调用基类的构造函数初始化基类的那一部分成员。如果基类没有默认 的构造函数则必须在派生类构造函数的初始化列表阶段显示调用。 2. 派生类的拷贝构造函数必须调用基类的拷贝构造完成基类的拷贝初始化。 3. 派生类的 operator 必须要调用基类的 operator 完成基类的复制。 4. 派生类的析构函数会在被调用完成后自动调用基类的析构函数清理基类成员。因为这样才能 保证派生类对象先清理派生类成员再清理基类成员的顺序。 5. 派生类对象初始化先调用基类构造再调派生类构造。 6. 派生类对象析构清理先调用派生类析构再调基类的析构。 7. 因为后续一些场景析构函数需要构成重写重写的条件之一是函数名相同 ( 这个我们后面会讲 解 ) 。那么编译器会对析构函数名进行特殊处理处理成 destrutor() 所以父类析构函数不加 virtual 的情况下子类析构函数和父类析构函数构成隐藏关系。 class Person { public:Person(const char* name peter): _name(name){cout Person() endl;}Person(const Person p): _name(p._name){cout Person(const Person p) endl;}Person operator(const Person p){cout Person operator(const Person p) endl;if (this ! p)_name p._name;return *this;}~Person(){cout ~Person() endl;} protected:string _name; // 姓名 };class Student :public Person { public:protected:int _id;//学号 };int main() {Student s;return 0; } 当我实例化一个Student的对象s时调用了父类的构造和析构函数这就说明了当派生类进行实例化时会调用基类的构造函数来构造派生类中基类的成员。 当我自己写了一个Student的构造函数那么怎么初始化基类的成员呢可以在初始化列表调用基类的构造函数然后我们可以看到是先调用了基类的构造函数再构造派生类的成员。 那么拷贝构造和赋值重载怎么构造的呢也是差不多的使用基类的构造函数完成对基类成员的构造然后使用赋值的切片把基类的成员切过去构造。 那析构函数呢析构函数需要显示调用而且还有一个特殊处理就是析构要先析构派生类再析构基类。因为先析构基类的话万一派生类使用了基类的成员而且基类已经被析构有可能出现基类资源已经清理释放掉了然后派生类还去访问了基类的成员就会存在野指针的问题。所以在派生类的析构函数被调用之后基类的析构函数会自动调用。 class Person { public:Person(const char* name peter): _name(name){cout Person() endl;}Person(const Person p): _name(p._name){cout Person(const Person p) endl;}Person operator(const Person p){cout Person operator(const Person p) endl;if (this ! p)_name p._name;return *this;}~Person(){cout ~Person() endl;} protected:string _name; // 姓名 };class Student :public Person { public:Student(const char* name,int id):_id(id),Person(name){cout Student() endl;}Student(const Student s):Person(s),_id(s._id){cout Student(const Student s) endl;}Student operator(const Student s){cout Student operator(const Student s) endl;if (this ! s){_id s._id;Person::operator(s);}return *this;}~Student(){//Person::~Person();cout ~Student() endl;} protected:int _id;//学号 };int main() {Student s1(张三,18);Student s2(s1);Student s3 s1;return 0; } 今天的分享到这里就结束了感谢大家的阅读
http://www.zqtcl.cn/news/509746/

相关文章:

  • 建站平台软件猪八戒做网站要多少钱
  • 建设集团网站专业开发网站多少钱
  • 网站制作流程有哪些wordpress众筹
  • 网站打开是建设中手机咋建网站
  • 外贸专业网站的公司建百度网站
  • 北京做网站开发公司有哪些网站技术开发文档模板
  • 图解asp.net网站开发实战外管局网站先支后收怎么做报告
  • 访问自己做的网站吗织梦自动生成手机网站
  • 湖南岳阳网站开发网络公司兰州最好的互联网公司
  • 网站上线 流程网站左侧漂浮代码
  • 基于mvc4商务网站开发网站建设引言
  • 深圳网站设计师西安企业100强
  • dz网站数据备份购物网站配色怎么设计
  • 适合网站开发工程师的公司图片百度搜索
  • 网站界面设计需求wordpress single.php
  • 比较权威的房产网站合肥瑶海区地图全图高清版
  • 网站建设公司果动小学电教检查网站建设资料
  • 电子商务网站设计成功的要素青岛网页设计师
  • 门户网站平台建设方案网站开发后如何上线
  • 濮阳做网站的番禺区网络推广渠道
  • 杭州网站seo外包外链图片
  • 苏州网站建设有限公司枣阳建网站
  • 网站开发平台选择如何制作购物网站
  • 专业建设网站企业外包公司企业网站
  • 网站开发需求确认书国家商标注册官网查询系统
  • 国内个人网站建设wordpress 添加搜索
  • 网站建设创新简述网站开发具体流程
  • wordpress小说网站模板南宁企业网站seo
  • 网站开发与设计课程时间网站推广的搜索引擎推广
  • 网站首页幻灯片不显示网页设计制作项目