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

新开的公司怎么做网站手机网站设计神器

新开的公司怎么做网站,手机网站设计神器,黄岩网站建设,网站在建设是什么意思一、继承前言在c里面,继承是指2个类之间的关系例如:有一个org类,功能很完善,体量很大,突然有一天,需求发生改变,org类不能满足新的需求,我们的第一想法是,复制 org 类代码…

一、继承

前言

在c++里面,继承是指2个类之间的关系

例如:有一个org类,功能很完善,体量很大,突然有一天,需求发生改变,org类不能满足新的需求,我们的第一想法是,复制 org 类代码,粘贴成 new 代码,然后在new代码里面写新的函数,以满足新需求,但是我们有时无法复制粘贴,有可能体量太大,复制不方便。有可能该类我们没有源代码,没有办法去复制,所以我们应该使用继承,让new类继承自 org类,一旦继承过后,new类即使什么都不写,就会天然的拥有org类里面所有的数据和函数

在继承里面:
org类:  我们称为父类 或者 基类
new类:我们称为子类 或者 派生类

1、继承的语法格式

class org{    
}
class new:public/protected/private org{
}

2、三种继承方式

        继承类时有 public / protected / private 三种继承方式

1)不同继承方式下基类的访问权限

原有权限  \  继承方式publicprotectedprivate
publicpublicprotectedprivate
protectedprotectedprotectedprivate
privateprivate(被隐藏)private(被隐藏)private(被隐藏)

在继承中 protected 和 private 的区别

在继承过后,派生类无法内部访问基类的私有成员,但是派生类可以内部访问基类的受保护成员

 2)继承的本质

其实继承就相当于复制粘贴,只是复制粘贴这一步是由编译器在编译那一步完成的

3、继承到底继承哪些内容

1)可以继承的内容

运算符重载函数、静态成员属性、静态成员方法、构造函数和析构函数

        构造函数和析构函数要特别注意,虽然派生类继承了基类的构造函数和析构函数,但是并不是说将基类的构造函数和析构函数继承给派生类作为构造函数和析构函数,只是继承在派生类中,在构造和析构基类的对象时可以调用。 

2)不能继承的内容

友元函数:是关于类的一种关系,并不是类的成员,自然不能继承

4、初始化及访问基类私有成员

1)初始化基类的私有成员

私有成员不论是派生类还是基类,都只能类中访问,构造类中的成员也只能由自己的构造函数完成
因此可以在派生类的初始化列表中调用基类的构造函数来初始化。

注意:派生类只能调用直接基类的构造函数,不能夸辈调用构造函数。
例如:A继承B,B继承C,A可以调用B的构造函数,但是不能调用C的构造函数

2)访问基类私有成员 

外部访问类的私有成员需要类中设有公开接口才能访问,派生类访问基类的私有成员也是一样的

5、基类、派生类、派生类中的对象的构造顺序

在构建派生类对象时,按照执行顺序,会先构造基类,再构建派生类中的对象,最后是派生类自己

构造的顺序是:
基类 -> 派生类中的对象 -> 派生类本身

析构的顺序是:(遵循先进后出原则,先构建的后析构)
派生类本身 -> 派生类中的对象 -> 基类

6、基类、派生类中的重名函数或变量

7、多重继承

8、棱形继承

1)棱形继承存在的问题

2)virtusl(虚继承)

二、多态

前言

多态是指,基类可以调用多个不同派生类对象的成员方法的能力

1、多态的实现

1)多态是通过virtual (虚函数) 来实现的(步骤)

  1. 声明虚函数:在基类中用关键字virtual 声明虚函数
  2. 重写虚函数:将派生类中要调用的函数名重写,与虚函数名同名同参
  3. 通过引用/指针调用:使用基类类型的指针或引用指向派生类的对象,并调用基类的虚函数

2)示例

#include <iostream>
#include <cstring>
#include <cstdlib>
#include <sstream>
#include <vector>
#include <memory>
#include <unistd.h>using namespace std;class Core{private:public:virtual void func()//声明虚函数{cout << "基类函数" << endl;}
};class Core_pro:public Core{private:public:void func()//将想要调用的函数写为和虚函数同名同参的函数{cout << "派生类函数1" << endl;}
};class Core_pro_max:public Core{private:public:void func()//将想要调用的函数写为和虚函数同名同参的函数{cout << "派生类函数2" << endl;}
};class Person{private:public://以引用类型接收变量,调用不同派生类的成员方法void work1(Core& c){c.func();}//以指针类型接收变量,调用不同派生类的成员方法void work2(Core* c){c->func();}
};      int main(int argc,const char** argv)
{Core c;Core_pro cp;Core_pro_max cpm;Person zs;//传入变量zs.work1(c);zs.work1(cp);zs.work1(cpm);//传入地址zs.work2(&c);zs.work2(&cp);zs.work2(&cpm);return 0;                        
}

作业练习:

1:写一个Msg消息队列类,要求有以下功能Msg m() 构造函数,创建消息队列m[1] << "hello" 向消息队列的1频道写入数据"hello",当然可以是其他的字符串数据m[2] >> str :从2频道读取消息,并且将读到的消息存入str中析构函数:删除消息队列

2:写一个员工类 Employee,有一个多态函数叫做 getSalary有一个 Cleanner 保洁类,继承自员工类:每个月获得 5000 工资有一个 Coder 程序员类,继承自员工类,每个月获得 10000工资有一个 Manger 经理类,继承自员工类,每个月获得 15000工资写一个发工资的函数,要求,能够为所有员工发放工资,即使追加新的岗位,也不会改变这个函数的逻辑

 

3:写一个基类叫做颜色写3个派生类,红绿蓝以及需要存在的其他颜色,继承自颜色类要求实现以下功能:Red rGreen g;Color new_color = r + gnew_color.show() ;// 终端输出 "黄色"

http://www.dtcms.com/a/482359.html

相关文章:

  • Bootstrap5 选择区间
  • 考研10.5笔记
  • [c++语法学习]Day 9:
  • LeetCode算法日记 - Day 71: 不同路径、不同路径II
  • 掌握string类:从基础到实战
  • 【C++】四阶龙格库塔算法实现递推轨道飞行器位置速度
  • 网站建设的费用怎么做账网站开发视频是存储的
  • 张店学校网站建设哪家好高端品牌衣服有哪些
  • 区域网站查询游戏代理平台
  • 分布式控制系统(DCS)的智能组网技术解析及解决方案
  • React18学习笔记(六) React中的类组件,极简的状态管理工具zustand,React中的Typescript
  • Jenkins 实现 Vue 项目自动化构建与远程服务器部署
  • Jenkins集成Jmeter压测实战攻略
  • Kubernetes 集群调度与PV和PVC
  • 工具: 下载vscode .vsix扩展文件方法
  • FastbuildAI后端ConsoleModule模块注册分析
  • Ubuntu安装Hbase
  • 恶意进程排查
  • Docker Desktop在MAC上无法强制关闭的命令清理方式
  • Android音频学习(二十二)——音频接口
  • 河北网站备案流程抖音代运营交1600押金
  • 专做正品 网站网站关键词优化培训
  • 2025年--Lc184--62.不同路径(动态规划)--Java版
  • 区块链的理解
  • 【GUI自动化测试】YAML 配置文件应用:从语法解析到 Python 读写
  • 使用llamaindex实现RAG时 的常见使用框架或工具
  • YOLOv3:高效精准的实时目标检测算法
  • 怎么做坑人网站同城新闻app有哪些
  • 网站建设需求调研问卷韶关网站开发
  • 设计模式篇之 责任链模式 Chain of Responsibility