47 - 父子间的冲突
创始人
2024-04-12 22:22:57
0

---- 整理自狄泰软件唐佐林老师课程

1. 思考

子类中是否可以定义父类中的同名成员?
如果可以,如何区分?如果不可以,why?

1.1 编程实验:同名成员变量

#include 
#include using namespace std;class Parent
{
public:int mi;
};class Child : public Parent
{
public:int mi;
};int main()
{Child c;c.mi = 100;    // mi 究竟是子类自定义的,还是从父类继承得到的?return 0;
}

在这里插入图片描述

1.2 父子间的冲突

  • 子类可以定义父类中的同名成员
  • 子类中的成员将隐藏父类中的同名成员(同名覆盖
  • 父类中的同名成员 依然存在于子类中
  • 通过 作用域分辨符( : : 访问父类中的同名成员

1.2.1 访问父类中的同名成员

在这里插入图片描述

1.2.2 编程实验:同名成员变量深度分析

#include 
#include using namespace std;namespace A
{int g_i = 0;
}namespace B
{int g_i = 1;
}class Parent
{
public:int mi;Parent(){cout << "Parent() : " << "&mi = " << &mi << endl;}
};class Child : public Parent
{
public:int mi;Child(){cout << "Child() : " << "&mi = " << &mi << endl;}
};int main()
{Child c;c.mi = 100;    c.Parent::mi = 1000;cout << "&c.mi = " << &c.mi << endl;cout << "c.mi = " << c.mi << endl;cout << "&c.Parent::mi = " << &c.Parent::mi << endl;cout << "c.Parent::mi = " << c.Parent::mi << endl;return 0;
}

在这里插入图片描述

2. 再论重载

  • 类中的成员函数可以进行重载
    • 重载函数的本质为多个不同的函数
    • 函数名和参数列表是唯一的标识
    • 函数重载必须发生在同一个作用域中

2.1 问题

子类中定义的函数是否能重载父类中的同名函数?

2.2 编程实验:父子间的函数重载

#include 
#include using namespace std;class Parent
{
public:int mi;void add(int v){mi += v;}void add(int a, int b){mi += (a + b);}
};class Child : public Parent
{
public:int mi;void add(int v){mi += v;}void add(int a, int b){mi += (a + b);}void add(int x, int y, int z){mi += (x + y + z);}
};int main()
{Child c;c.mi = 100;    c.Parent::mi = 1000;cout << "c.mi = " << c.mi << endl;cout << "c.Parent::mi = " << c.Parent::mi << endl;c.add(1);c.add(2, 3);c.add(4, 5, 6);cout << "c.mi = " << c.mi << endl;cout << "c.Parent::mi = " << c.Parent::mi << endl;return 0;
}

在这里插入图片描述
在这里插入图片描述

2.3 实验结果

  • 子类中的函数将隐藏父类的同名函数(同名覆盖)
  • 子类无法重载父类中的成员函数(函数重载必须发生在同一作用域)
  • 使用作用域分辨符访问父类中的同名函数
  • 子类可以定义父类中完全相同的成员函数

3. 小结

  • 子类可以定义父类中的同名成员
  • 子类中的成员将隐藏父类中的同名成员
  • 子类和父类中的函数不能构成重载关系
  • 子类可以定义父类中完全相同的成员函数
  • 使用作用域分辨符访问父类中的同名成员

相关内容

热门资讯

个人销售住房增值税政策来了 12月29日,财政部、国家税务总局发布“关于个人销售住房增值税政策的公告”。 个人(不含个体工商...
南京拟修订法规加强历史文化名城... 原题:保护利用将设“正负面清单” 《南京市历史文化名城保护条例》将迎大修 南京市历史文化名城保护法规...
《深圳公益诉讼检察工作白皮书(... 深圳新闻网2025年12月31日讯(深圳特区报记者 上官文复 通讯员 李俞青)12月30日,深圳市人...
了解招生政策要选择官方渠道 石向阳 绘 日前,清华大学招生办公室发布声明称,有部分机构与个人冒用学校名义开展招生宣讲,散布不实招...
视频丨日学者:高市言行和政策令... 日本上智大学政治学教授中野晃一近日在接受总台记者采访时指出,高市早苗有关对华立场的言论将进一步破坏日...
10年受理公益诉讼案件线索超8... 深圳特区报讯(记者 上官文复 通讯员 李俞青)12月30日,深圳市人民检察院举办《深圳公益诉讼检察工...
日学者:高市言行和政策令日本面... 日本上智大学政治学教授中野晃一近日在接受总台记者采访时指出,高市早苗有关对华立场的言论将进一步破坏日...
袁家军、胡衡华、刘明胜、徐树彪... 据重庆日报消息,12月30日下午, 国家电投集团水电股份有限公司揭牌。重庆市委书记袁家军,市委副书记...
“3女带4孩续面”被改编成动画... 极目新闻记者 詹钘 近日,有网友发现,郑州续面事件已经被人改编成动画,在短视频平台和短剧平台播放。视...
征兵政策解读之二:征集条件篇 一、年龄条件 1.义务兵。男青年年满18 至22 周岁,普通高等学校本专科毕业生、符合毕业条件的毕业...