C++学习之第十天-继承

一、选择题

下面叙述错误的是(A)

A.基类的protected成员在派生类中仍然是protected

B.基类的protected成员在public派生类中仍然是protected的

C.基类的protected成员在private派生类中是private的

D.基类的protected成员不能被派生类的对象访问

解析:
权限运算规则:
public > protecetd > private
(继承方式 与 基类中权限 )取交集 = 派生类中权限

2、下列对派生类的描述中,(D)是错误的。

A.一个派生类可以作为另一个派生类的基类

B.派生类至少有一个基类

C.派生类的成员除了它自己的成员外,还包含了它的基类成员

D.派生类中继承的基类成员的访问权限到派生类保持不变

3、派生类的对象对它的哪一类基类成员是可以访问的?(A)

        A.公有继承的基类的公有成员 B. 公有继承的基类的保护成员

        C. 公有继承的基类的私有成员 D. 保护继承的基类的公有成员

4、关于多继承二义性的描述,(D)是错误的。

A.派生类的多个基类中存在同名成员时,派生类对这个成员访问可能出现二义性

B.一个派生类是从具有共同的间接基类的两个基类派生来的,派生类对该公共基类的访问可能出现二义性

C.解决二义性最常用的方法是作用域运算符对成员进行限定

D.派生类和它的基类中出现同名函数时,将可能出现二义性

派生类和它的基类中出现同名函数,如果与基类中虚函数同名,则是覆盖。
如果和非虚函数同名,则是隐藏。

5、设有基类定义:

class Base
{   
private: 
	int a;
protected: 
	int b;
public: 
	int c;
};

派生类采用何种继承方式可以使成员变量b成为自己的私有成员( A )

A. 私有继承 B.保护继承C. 公有继承 D.私有、保护、公有均可

二、填空题

1、在继承机制下,当对象消亡时,编译系统先执行[ 派生类 ] 的析构函数,然后才执行 [ 派生类中成员对象 ] 的析构函数,最后执行 [基类] 的析构函数。

三、改错题以及写结果题。

1、指出并改正下面程序中的错误。

#include<iostream>

using std::cout;
using std::endl;

class Point
{   
public:
    Point(int a=0, int b=0) 
	{
		x = a; 
		y = b;
	}
    void move(int xoffset,int yoffset) 
	{
		x += xoffset; 
		y += yoffset;
	}
	

    int getx() 
    {	
    	return x;	
    }
    
    int gety() 
    {	
    	return y;	
    }

private:
	int x,y;
};

class Rectangle
:protected Point
{    
public:
	Rectangle(int x, int y, int l, int w)
	: Point(x,y)
	{   
		length = l;
		width  = w;
	}
	

	int getLength()
	{	
		return length;	
	}
	
	int getWidth()	
	{	
		return width;	
	}

private:
	int length;
	int width;
};
int main()
{ 
	Rectangle r(0, 0, 8,4);
 	r.move(23,56);
	cout << r.getx() 
	     << "," << r.gety() 
		 << "," << r.getlength() 
		 << "," << r.getwidth() << endl;
		 

	return 0;

}

答:三处错误:

​ 1.protected---->public

​ 2.r.getlength() -->r.getLength();

​ 3.r.getwidth() --->r.getWidth();

2、指出并改正下面程序中的错误。

#include<iostream>

using std::cout;
using std::endl;

class A
{
 public:
    int x;
    A(int a = 0) 
	{
		x = a;
	}
    void display() 
	{ 
		cout<< "A.x = " << x << endl;
	}
};
class B
{ 
public:
	int x;
    B(int a = 0) 
	{
		x=a;
	}
 	

	void display() 
	{
		cout<<"B.x = " << x << endl; 
	
  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

给你。

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值