C++面向对象程序设计第五章第5题求解
有一下程序结构,请分析访问属性。classA{public:voidf1();inti;protected:voidf2();intj;private:intk;};cl...
有一下程序结构,请分析访问属性。
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成员函数?
(6)派生类C的成员函数f4能否调用基类A中的成员函数f1,f2和派生类中的成员函数? 展开
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成员函数?
(6)派生类C的成员函数f4能否调用基类A中的成员函数f1,f2和派生类中的成员函数? 展开
1个回答
展开全部
(1)
b1.i 正确因为i是A类的公有成员,可以继承到子类B
b1.j b1.k 错误。因为j为保护成员,k为私有成员,虽然被继承了,但不能够访问,正如a1.j,a1.k也是错误的。这样调用只能调用公有成员
(2)
都可以,在B类里面,A类非私有成员都可以给B的成员函数使用,因为都被继承了过来
(3)
跟第二个类似,非私有的都可以使用。因此i,j可以使用。
(4)
c1.i是对的,其他都是错的
(5)
公有就可以了。f2不行
(6)
非私有的都可以,因此全部都行
楼主问的问题,其实掌握两条定理就好了。
(1)类里面能调用该类或基类的非私有成员变量或成员函数。
(2)类外对象能调用该类或基类的公有成员变量或成员函数。
b1.i 正确因为i是A类的公有成员,可以继承到子类B
b1.j b1.k 错误。因为j为保护成员,k为私有成员,虽然被继承了,但不能够访问,正如a1.j,a1.k也是错误的。这样调用只能调用公有成员
(2)
都可以,在B类里面,A类非私有成员都可以给B的成员函数使用,因为都被继承了过来
(3)
跟第二个类似,非私有的都可以使用。因此i,j可以使用。
(4)
c1.i是对的,其他都是错的
(5)
公有就可以了。f2不行
(6)
非私有的都可以,因此全部都行
楼主问的问题,其实掌握两条定理就好了。
(1)类里面能调用该类或基类的非私有成员变量或成员函数。
(2)类外对象能调用该类或基类的公有成员变量或成员函数。
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询