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

那个网站做字体微信视频号怎么推广引流

那个网站做字体,微信视频号怎么推广引流,小说网站排行榜前十名,wordpress整合openid目录 派生类的生成过程 派生类的构造函数与析构函数: 构造函数: 派生类组合类的构造和析构: 构造函数和析构函数调用顺序: 派生类的生成过程 三步骤: 吸收基类(父类)成员:实现代…

目录

派生类的生成过程

派生类的构造函数与析构函数:

构造函数:

派生类+组合类的构造和析构:

构造函数和析构函数调用顺序:


派生类的生成过程

三步骤:

吸收基类(父类)成员:实现代码重用;

派生类继承了基类除了构造函数、析构函数以外的所有成员函数。

改造基类(父类)成员:改变原基类成员的访问控制权限、同名覆盖原基类的成员;

同名覆盖:在派生类中定义一个与基类同名的成员,派生类的成员将基类原成员隐藏;

对原基类被覆盖成员的访问方式:

//访问被覆盖的A类成员:A::show();

新增派生类(子类)成员:对源代码进行扩充。

以派生类的实际需求新增加数据成员和成员函数,以增强派生类的功能

 

 

派生类的构造函数与析构函数:

因为派生类无法继承基类的构造函数与析构函数,且派生类成员由继承的基类成员、派生类新增成员共同构成,我们需自行完成构造函数实现对继承成员及新增成员的初始化、析构函数释放成员。

构造函数:

我们可以通过基类构造函数,初始化继承的基类成员

构造函数格式:

派生类名:: 派生类名(  参数列表  ):基类名(初始化列表),新成员(参数) 
{};

eg:

//继承与派生的生成过程
#include <iostream>
#include <string>
using namespace std; class A //基类
{
public:A(int i) :a(i) { cout << "A 的构造函数" << endl; };A() :a() { cout << "A 的默认!构造函数" << endl; };~A() { cout << "A 的析构函数" << endl; };void show(){cout << "a=" << a<<endl;}
private:int a;
};class B :public A
{
public:B(int j) :b(j) { cout << "B 的构造函数" << endl; }//等同与://B(int j):A(),b(j)//{cout << "A 的构造函数" << endl; }B(int i, int j) :A(i), b(j) { cout << "B 的构造函数" << endl; }//同名覆盖:void show(){//访问基类原被覆盖成员:A::show();cout << "b=" << b << endl;}~ B() { cout << "B 的析构函数" << endl; }
private :int b;//新增加成员
};
int main()
{A a{9};a.show();B b{7,8};b.show();return 0;
}

注意:

  • 基类的构造函数必须在初始化列表内完成
    • 进入构造函数大括号内说明构造函数的功能已经实现,而基类未初始化
  • 基类如有默认构造函数时,可以省略不写
    • 该构造函数初始化,自动跳转默认构造函数

输出:

总结:派生类的构造:先调用基类构造函数、再调用派生类的构造函数,析构函数则与派生顺序相反(形成对称)

析构函数:

~类名();无差别,特殊情况区别处理;

派生类+组合类的构造和析构:

派生类:继承所得类

组合类:新增加的成员对象是另一个类的对象

//继承与派生的生成过程
//这是配置好的模板文件
#include <iostream>
#include <string>
using namespace std; class X 
{
public:X(int x) :c(x){cout << "X(int x)构造函数" << endl;}~X(){cout << "~X()析构函数" << endl;}void show(){cout << "c=" << c << endl;}
private:int c;
};
class A //基类
{
public:A(int i) :a(i) { cout << "A 的构造函数" << endl; };A() :a() { cout << "A 的默认!构造函数" << endl; };~A() { cout << "A 的析构函数" << endl; };void show(){cout << "a=" << a<<endl;}
private:int a;
};

派生类:


class B :public A
{
public:B(int i, int x) : b(i), c(x){cout << "B 的构造函数" << endl;}//等同与://B(int j,int x):A(),b(j),c(x)//{cout << "A 的构造函数" << endl; }B(int i,int j,int x):A(i),b(j),c(x){ cout << "B 的构造函数" << endl; }//同名覆盖:void show(){//访问基类原被覆盖成员:A::show();cout << "b=" << b << endl;c.show();}~ B() { cout << "B 的析构函数" << endl; }
private :int b;//新增加成员X  c;  //新增组合类的成员
};
int main()
{/*A a{9};a.show();*/B b{7,8,9};b.show();return 0;
}

输出:

构造函数和析构函数调用顺序:

派生类构造函数执行顺序一般是:

基类(父类)、组合类、派生类

具体如下:

(1)先调用基类的构造函数

(2)然后按照数据成员的声明顺序,依次调用数据成员的构造函数或初始化数据成员;

(3)最后执行派生类构造函数的函数体。

注意:构造函数的执行顺序只与成员声明的顺序有关,而与初始化表中各项的排列顺序无关。

 

注意:派生类析构函数执行时将自动调用基类、组合类成员对象的析构函数

析构函数执行顺序:

派生类、组合类、基类

析构函数与构造函数顺序相反,形成对称

http://www.hkea.cn/news/15072/

相关文章:

  • 学广告专业我后悔了北京seo优化公司
  • 网站建设怎么谈品牌型网站制作价格
  • php网站建设案例雅虎搜索引擎首页
  • 棋牌网站建设广东短视频seo搜索哪家好
  • 做桑拿网站挣钱吗推广软件一键发送
  • 成都app开发解决方案个人seo怎么赚钱
  • 做网站前端设计需要哪些证书百度云网盘
  • 深圳网站建设 设计创公司百度产品优化排名软件
  • 有原型怎么做网站线上推广策划方案范文
  • java怎么做直播网站网站一般怎么推广
  • 衡水做网站推广的公司常见的网络推广方法
  • b2c电子商务网站源码南京seo推广优化
  • 建设企业网站的流程什么网站做推广比较好
  • 淄博网站制作定制网站怎么添加外链
  • 长沙网站关键词排名推广公司深圳网络推广哪家
  • 帮别人做设计的网站拉新推广一手接单平台
  • zencart网站模板如何做好精准营销
  • 网站建设业务客户来源百度收录网站提交入口
  • 深圳网站设计联系电话seo在哪学
  • 租电信服务器开网站bt kitty磁力猫
  • app网站开发多少钱怎么做推广让别人主动加我
  • 香港头条新闻百度seo优化包含哪几项
  • 做软装的网站第一站长网
  • 自贡市住房和城乡建设局网站文大侠seo博客
  • 东莞网站设计开发技能大赛兰州网络推广关键词优化
  • dede做的网站怎样去换模版谷歌搜索引擎
  • 建设网站的市场定位新野seo公司
  • 仓储服务 东莞网站建设 技术支持百度地图导航2022最新版下载
  • 做一家开发网站的公司2020最成功的网络营销
  • 城乡建设厅建设网站店铺推广方式有哪些