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)在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是保护成员函数,可以被派生类成员函数调用。

你可能感兴趣的:(#,C++程序设计,(第三版),谭浩强,课后习题,C/C++,c++,算法)