首页 > 试题广场 > 有以下程序 #include<iostream>
[单选题]
有以下程序
#include<iostream>
using namespace std;
class Point
{public:
Point(float xx=0, float yy=0)
{X=xx;Y=yy;}
float GetX() {return X;}
private:
float X,Y;};
class Rectangle: private Point
{public:
Rectangle(float x, float y, float w, float h):Point(x,y)
{W=w;H=h;}
float GetX() {return ___________;}
float GetH() {return H;}
float GetW() {return W;}
private:
float W,H;};
int main()
{   Rectangle r(1,2,3,4);
cout<<r.GetX();
return 0;}
请为横线处选择合适的程序使得程序的运行结果是1(      )
  • Y
  • Point::GetX()
  • GetX()
  • X
xcn头像 xcn
私有成员调用,需要加上该私有成员的的归属类
发表于 2019-11-10 10:10:31 回复(0)
这题这么顶,果断收藏了
发表于 2020-05-24 23:02:35 回复(0)
有哪位大佬能详细说明吗?
发表于 2020-05-19 08:23:30 回复(0)
注意,派生类Rectangle中,其构造函数中的形参x和y是小写的,与X和Y是不同的。
因此要返回1,就必须调用基类的GetX()函数。
而基类的GetX()函数其返回值X是私有成员,因此需要加上归属类,即Point::GetX()。
发表于 2020-07-10 18:14:15 回复(0)
本题知识点为啥这么强 
发表于 2020-03-10 15:52:09 回复(0)
如果不加Point:: 
那代码肯定有二义性,因为这也可以看成是一个递归函数
发表于 2019-10-18 21:35:20 回复(0)
注意X是Point的私有成员变量
发表于 2019-08-19 16:29:01 回复(0)