| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2955 人关注过本帖, 1 人收藏
标题:小白求助 关于继承的问题
只看楼主 加入收藏
d7se123
Rank: 2
等 级:论坛游民
帖 子:65
专家分:14
注 册:2020-3-13
结帖率:50%
收藏(1)
 问题点数:0 回复次数:11 
小白求助 关于继承的问题
图片附件: 游客没有浏览图片的权限,请 登录注册



Parent父类中有一个showParent方法  那么Child继承父类,也继承了一个一个showParent方法
c1.showParent()是调用的父类的 showParent  还是子类的
搜索更多相关主题的帖子: 方法 调用 继承 子类 父类 
2020-03-30 19:03
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9025
专家分:54030
注 册:2011-1-18
收藏
得分:0 
上面调用的是 ,你这是图像吧,我想拷贝一段文字都没办法
上面调用的是子类的那个函数,下面特意指明了调用父类的那个函数。
2020-03-30 22:12
d7se123
Rank: 2
等 级:论坛游民
帖 子:65
专家分:14
注 册:2020-3-13
收藏
得分:0 
程序代码:
#include "iostream"
using std::endl;
using std::cin;
using std::cout;

class Parent
{
public:
    int a;
    int b;
public:
    void getParent()
    {
        cout << a << " " << b << endl;
    }
};

class Child :public Parent
{
public:
    int a;
    int b;
public:
    void getChild()
    {
        cout << a << " " << b << endl;
    }
};

int main()
{
    Child c1;
    c1.getParent();  //大哥问题在这,Child继承父类Parent,也继承了他的getParent()方法,那么用子类对象去调getParent方法,
                    调用的是父类的还是子类继承过来的方法呀?就是说调用的这个getParent方法属于父类还是子类?
    system("pause");
    return 0;
}
2020-03-31 13:41
d7se123
Rank: 2
等 级:论坛游民
帖 子:65
专家分:14
注 册:2020-3-13
收藏
得分:0 
回复 2楼 rjsp
这个问题一直困扰着我
2020-03-31 13:41
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9025
专家分:54030
注 册:2011-1-18
收藏
得分:0 
Child继承父类Parent,也继承了他的getParent()方法,那么用子类对象去调getParent方法,调用的是父类的还是子类继承过来的方法呀?就是说调用的这个getParent方法属于父类还是子类?

你是不是误以为 派生类 继承了 基类,就意味着 基类的成员函数 被复制了一份给 派生类?

在你3楼代码的main函数中增加一句
cout << boolalpha << (&Child::getParent == &Parent::getParent) << endl;
它将输出 true。
也就是说,class Child 和 class Parent 的成员函数 getParent 是同一个。
2020-03-31 16:33
d7se123
Rank: 2
等 级:论坛游民
帖 子:65
专家分:14
注 册:2020-3-13
收藏
得分:0 
回复 5楼 rjsp
大佬 解答的好啊 心理有点明白了 这个知识点超出我目前知识范围了 不过根据你的回答父类的这个方法和子类的实际上是同一个
2020-03-31 19:14
d7se123
Rank: 2
等 级:论坛游民
帖 子:65
专家分:14
注 册:2020-3-13
收藏
得分:0 
回复 5楼 rjsp
水平蛮高的大佬
2020-03-31 19:15
d7se123
Rank: 2
等 级:论坛游民
帖 子:65
专家分:14
注 册:2020-3-13
收藏
得分:0 
回复 5楼 rjsp
对了 继承不是说派生类继承基类所有成员方法和成员变量吗?
怎么基类的方法不复制一遍给派生类呢?
太过底层的东西我估计理解不了 以后学汇编就应该能懂了
2020-03-31 19:21
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9025
专家分:54030
注 册:2011-1-18
收藏
得分:0 
回复 8楼 d7se123

假如定义了两个 Parent 对象,
Parent x, y;
那你是不是认为 x.getParent() 和 y.getParent() 是两个不同的函数?

当你定义了 void Parent::getParent(void) 之后,一切 Parent 类型的对象都可以调用它,
Parent x, y; 中 x, y 是 Parent 类型的对象;
Child u, v; 中 u, v 是 Child 类型的对象,也是 Parent 类型的对象。因为 Child 是public继承自 Parent,那么 Child 就是一个 Parent。
举个例子:
class 人类;
class 教师 : public 人类;
那么 教师 就是 人类,一切适用于 人类 的函数,自然适用于 教师 。
2020-04-01 08:43
d7se123
Rank: 2
等 级:论坛游民
帖 子:65
专家分:14
注 册:2020-3-13
收藏
得分:0 
明白了 我看视频上说 子类是特殊的父类 大致是这个意思吧
2020-04-01 13:30
快速回复:小白求助 关于继承的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.054506 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved