C++ //习题 11.5 有以下程序结构,请分析访问属性。
发布时间: 2023年12月22日
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是保护成员函数,可以被派生类成员函数调用。
文章来源:https://blog.csdn.net/navicheung/article/details/135149031
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:chenni525@qq.com进行投诉反馈,一经查实,立即删除!