我是 C++ 编程新手,我正在阅读继承概念,我对继承概念有疑问:如果基类和派生类具有相同的数据成员,会发生什么。另外请仔细阅读我的代码,如下所示:
#include "stdafx.h"
#include <iostream>
using namespace std;
class ClassA
{
protected :
int width, height;
public :
void set_values(int x, int y)
{
width = x;
height = y;
}
};
class ClassB : public ClassA
{
int width, height;
public :
int area()
{
return (width * height);
}
};
int main()
{
ClassB Obj;
Obj.set_values(10, 20);
cout << Obj.area() << endl;
return 0;
}
在上面我声明了与基类数据成员同名的数据成员,我称之为set_values()
使用派生类对象的函数来初始化数据成员width
and height
.
当我打电话给area()
函数,为什么它返回一些垃圾值而不是返回正确的值。仅当我声明与派生类中的基类数据成员同名的数据成员时,才会发生这种情况。如果我删除派生类中声明的数据成员,它工作正常。那么在派生类中声明有什么问题呢?请帮我。
The width
and height
数据成员在B
hide (or shadow)那些在A
.
在这种情况下它们没有任何用处,应该被删除
如果您想访问hidden (or shadowed) 数据成员,可以使用作用域解析:
int area()
{
return (A::width * A::height);
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)