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

餐饮网站建设黑帽seo联系方式

餐饮网站建设,黑帽seo联系方式,wordpress怎么用SSH,wordpress文章只允许投稿者浏览概念 上行转换:把派生类的指针或引用转换成基类表示,简单来说就是子类指向父类 下行转换:把基类指针或引用转换成派生类表示,简单来说就是父类指向子类 上行转换是安全的的,下行转换是不安全的(最好使用…

概念

  • 上行转换:把派生类的指针或引用转换成基类表示,简单来说就是子类指向父类

  • 下行转换:把基类指针或引用转换成派生类表示,简单来说就是父类指向子类

上行转换是安全的的,下行转换是不安全的(最好使用 dynamic_cast ,具体参考: xxx_cast 区别)

这里我们主要讨论上行转换,也就是派生类指针赋值给基类指针,下行转换可以参考上面那个链接 dynamic_cast 下行转换

先说结论:基类函数为虚函数和非虚函数情况不一样,下面分别进行讨论

非虚函数

参考:https://blog.csdn.net/ENSHADOWER/article/details/96638232

注意

  • 编译器通过指针来访问成员变量,指针指向哪个对象就使用哪个对象的数据;
  • 编译器通过指针的类型来访问成员函数,指针属于哪个类的类型就使用哪个类的函数。

虚函数

如果将 其中 的基类 A 的 display 函数改为虚函数,代码如下:

#include <iostream>
using namespace std;//基类A
class A {
public:A(int a);
public:virtual void display();
protected:int m_a;
};
A::A(int a) : m_a(a) { }
void A::display() {cout << "Class A: m_a=" << m_a << endl;
}//中间派生类B
class B : public A {
public:B(int a, int b);
public:void display();
protected:int m_b;
};
B::B(int a, int b) : A(a), m_b(b) { }
void B::display() {cout << "Class B: m_a=" << m_a << ", m_b=" << m_b << endl;
}//基类C
class C {
public:C(int c);
public:void display();
protected:int m_c;
};
C::C(int c) : m_c(c) { }
void C::display() {cout << "Class C: m_c=" << m_c << endl;
}//最终派生类D
class D : public B, public C {
public:D(int a, int b, int c, int d);
public:void display();
private:int m_d;
};
D::D(int a, int b, int c, int d) : B(a, b), C(c), m_d(d) { }
void D::display() {cout << "Class D: m_a=" << m_a << ", m_b=" << m_b << ", m_c=" << m_c << ", m_d=" << m_d << endl;
}int main() {A *pa = new A(1);B *pb = new B(2, 20);C *pc = new C(3);D *pd = new D(4, 40, 400, 4000);cout << "-------更改前-----" << endl;pa->display();pb->display();pc->display();pd->display();cout << "-----------------------" << endl;cout << "--------更改后-----------" << endl;pa = pd;pa->display();pb = pd;pb->display();pc = pd;pc->display();pd->display();cout << "-----------------------" << endl;system("pause");return 0;
}

最终输出结果为

-------更改前-----
Class A: m_a=1
Class B: m_a=2, m_b=20
Class C: m_c=3
Class D: m_a=4, m_b=40, m_c=400, m_d=4000
-----------------------
--------更改后-----------
Class D: m_a=4, m_b=40, m_c=400, m_d=4000
Class D: m_a=4, m_b=40, m_c=400, m_d=4000
Class C: m_c=400
Class D: m_a=4, m_b=40, m_c=400, m_d=4000

注意

  1. class A 的 display 函数是虚函数,更改指向之后,pa pb 调用的都是派生类的 display 函数,成员变量也就是相应派生类的
  2. 由于 class C 的 display 函数不是虚函数,所以更改指向之后,pc 依旧调用的是自身的 display 函数,但是成员变量 m_c 是派生类的

具体分析可以参考上面的链接

参考

https://blog.csdn.net/ENSHADOWER/article/details/96638232

最后附一份我整理的 CPP 面试相关知识点

https://github.com/EricPengShuai/Interview

logo
如果觉得不错的话可以 ⭐️ 一下

http://www.khdw.cn/news/17842.html

相关文章:

  • 一键生成app的软件锦绣大地seo
  • 找人搭建网站多少钱天眼查询个人
  • 长沙做网站a微联讯点很好做企业推广的公司
  • 怎么做网站外贸网站黄页推广软件
  • 2021没封的网站有人分享吗哪里有竞价推广托管
  • 淘宝客聚惠购的网站怎么做湖南关键词优化快速
  • 狂人站群系统网页怎么优化
  • 网站banner尺寸1920找资源最好的是哪个软件
  • 建程网app下载搜索引擎优化特点
  • 网站建设岗位能力网站如何做推广
  • 做3个网站需要多大的服务器线上培训机构有哪些
  • 建设部网站一级建造师游戏推广是干什么的
  • 做时尚网站取个名字网上教育培训机构哪家好
  • 南京做网站需要多少钱招商外包
  • 做公司网站建设价格低淘宝怎么设置关键词搜索
  • 淘宝的网站建设武汉网站推广很 棒
  • 协会网站建设计划书新疆疫情最新情况
  • 代做毕业设计网站家具设计云搜索系统
  • 学校免费网站建设怎样做网络推广效果好
  • 包头网站设计公司免费创建自己的网站
  • 刚注册在域名可以自己做网站吗北京做的好的seo公司
  • 电商 网站 备案谷歌外贸
  • 从事网站建长沙seo网络推广
  • 软件外包公司怎么找业务百度seo优化技术
  • 专业做域名的网站吗百度云资源链接分享群组
  • 重庆市建设工程信息网站诚信分软件编程培训学校排名
  • 景德镇做网站百度问答官网
  • 长沙营销型网站建设正规接单赚佣金的平台
  • 企业培训网站模板抖音搜索排名
  • 成品网站是什么漂亮的网页设计