博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C++:同名隐藏和赋值兼容规则
阅读量:5105 次
发布时间:2019-06-13

本文共 1649 字,大约阅读时间需要 5 分钟。

一、同名隐藏

同名隐藏,即在C++的继承中,只要子类的函数名和父类的函数名相同,子类中的函数将会隐藏所有父类中和子类的成员函数同名的函数

特别注意:

和函数之间的重载不同,这里只要求函数的名字相同,而对函数的参数列表是否相同不做要求。话句话说父类中和子类的成员函数名相同但参数列表不同的成员函数也会被隐藏

示例:

1 #include
2 using namespace std; 3 class Father{ //父类 4 public: 5 Father()=default; 6 Father(int v):value(v){} 7 void show(){ 8 cout<<"调用Father类中的成员函数show()"<

 

二、赋值兼容规则

所谓赋值兼容规则,即在任何需要基类对象的地方都可以用该基类的公有派生类的对象来代替,它主要包括以下情况:

• 派生类的对象可以赋值给基类的对象,此时的赋值操作主要是把派生类对象中所包含的对应基类的子对象赋值给基类对象

特别注意:

反过来(即将基类对象赋值给派生类对象)不行,因为派生类对象中的新成员将无值可赋

示意图:

示例:

1 #include
2 using namespace std; 3 class Father{ //父类 4 public: 5 Father()=default; 6 Father(int value):father_value(value){} 7 void show(){ 8 cout<<"Father类中的成员变量的值为:"<
<

• 可以将一个派生类对象的地址赋值给其基类的指针变量

特别注意:

1.只能通过该指针访问派生类中由基类继承来的隐藏对象,不能访问派生类中的新成员

2.此操作的本质是将指针指向派生类中由基类继承来的隐藏对象

3.不能将一个基类对象的地址赋值给一个派生类的指针变量

示意图:

示例:

1 #include
2 using namespace std; 3 class Father{ //父类 4 public: 5 Father()=default; 6 Father(int value):father_value(value){} 7 void show(){ 8 cout<<"Father类中的成员变量的值为:"<
<
show();32 //ptr->new_func(); //错误:只能通过该指针访问派生类中由基类继承来的隐藏对象,不能访问派生类中的新成员33 return 0; 34 }

• 派生类对象可以初始化基类的引用

特别注意:

1.只能通过该引用访问派生类中由基类继承来的隐藏对象,不能访问派生类中的新成员

2.此操作的本质是为派生类中由基类继承来的隐藏对象起一个别名

3.不能用基类对象来初始化派生类的引用

示意图:

示例:

1 #include
2 using namespace std; 3 class Father{ //父类 4 public: 5 Father()=default; 6 Father(int value):father_value(value){} 7 void show(){ 8 cout<<"Father类中的成员变量的值为:"<
<

 

转载于:https://www.cnblogs.com/duwenxing/p/7493419.html

你可能感兴趣的文章
文件流的使用以及序列化和反序列化的方法使用
查看>>
Android-多线程AsyncTask
查看>>
第一个Spring冲刺周期团队进展报告
查看>>
C++函数基础知识
查看>>
红黑树 c++ 实现
查看>>
Android 获取网络链接类型
查看>>
报表服务框架:WEB前端UI
查看>>
5.9UDP客户端服务器-基于OK6410
查看>>
java自学基础、项目实战网站推荐
查看>>
软件包的使用
查看>>
linux中启动与终止lnmp的脚本
查看>>
gdb中信号的处理[转]
查看>>
学习Javascript闭包(Closure)
查看>>
LeetCode【709. 转换成小写字母】
查看>>
如何在Access2007中使用日期类型查询数据
查看>>
Jzoj4757 树上摩托
查看>>
CF992E Nastya and King-Shamans(线段树二分+思维)
查看>>
基于docker的spark-hadoop分布式集群之一: 环境搭建
查看>>
oracle 几个时间函数探究
查看>>
第一个Java Web程序
查看>>