当前位置:   article > 正文

C++ //习题 11.5 有以下程序结构,请分析访问属性。

C++ //习题 11.5 有以下程序结构,请分析访问属性。

C++程序设计 (第三版) 谭浩强 习题11.5

习题 11.5 有以下程序结构,请分析访问属性。

IDE工具:VS2010
Note: 使用不同的IDE工具可能有部分差异。

 

代码块:
class A{
public:
	void f1();
	int i;

protected:
	void f2();
	int j;

private:
	int k;
};

class B: public A{
public:
	void f3();

protected:
	int m;

private:
	int n;
};

class C: public B{
public:
	void f4();

private:
	int p;
};

int main(){
	A a1;
	B b1;
	C c1;

	return 0;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
问:
(1)在main函数中能否用b1.i,b1.j和b1.k引用派生类B对象b1中基类A的成员?
(2)派生类B中的成员函数能否调用基类A中的成员函数f1和f2?
(3)派生类B中的成员函数能否引用基类A中的数据成员i,j,k?
(4)能否在main函数中用c1.i,c1.j,c1.k,c1.m,c1.n,c1.p引用基类A的成员i,j,k,派生类B的成员m,n,以及派生类C的成员p?
(5)能否在main函数中用c1.f1(),c1.f2(),c1.f3()和c1.f4()调用f1,f2,f3,f4成员函数f3?
(6)派生类C的成员函数f4能否调用基类A中的成员函数f1,f2和派生类中的成员函数f3?

 

答:
(1)在公有继承方式下,可以用b1.i引用基类A的成员,其为公有数据成员,不可以用b1.j引用基类A的成员,其为保护数据成员,不能类外访问,不可以用b1.k引用基类A的成员,其为私有数据成员,不能类外访问。
(2)可以调用,在公有继承方式下,派生类可以调用基类的公有成员函数和保护成员函数。
(3)在公有继承方式下,可以引用基类A的公有数据成员i和保护数据成员j,不可以引用私有数据成员k。
(4)c1.i可以,c1.j,c1.k,c1.m,c1.n,c1.p不可以。
(5)c1.f1(),c1.f3(),c1.f4()可以,c1.f2()不可以,属于保护成员函数。
(6)可以,f1,f3是公有成员函数,f2是保护成员函数,可以被派生类成员函数调用。
声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop】
推荐阅读
相关标签
  

闽ICP备14008679号