首页 > 试题广场 >

下列程序编译时会出现错误,请根据行号选择错误位置( )

[不定项选择题]
下列程序编译时会出现错误,请根据行号选择错误位置( )
#include <iostream>
using namespace std;
class A{
  int a1;
protected:
  int a2;
public:
  int a3;
};
class B: public A{
  int b1;
protected:
  int b2;
public:
  int b3;
};
class C:private B{
  int c1;
protected:
  int c2;
public:
  int c3;
};
int main(){
  B obb;
  C obc;
  cout<<obb.a1;//1
  cout<<obb.a2;//2
  cout<<obb.a3;//3
  cout<<obc.b1;//4
  cout<<obc.b2;//5
  cout<<obc.b3;//6
  cout<<obc.c3;//7
  return 0;
}
  • 1,2
  • 2,5,7
  • 3,4,7
  • 4,5,6
发表于 2018-07-16 22:03:17 回复(3)
对于第2个,之前一直没搞懂,仔细研究概念才明白。
对于父类中的protected成员a2,通过public继承,此时对于子类来说,权限为protected,这个没问题。
但是protected权限的定义是:只允许子类及本类的成员函数访问,所以并不能像2中直接引用。
发表于 2018-07-17 15:04:06 回复(1)
发表于 2021-03-22 16:28:57 回复(1)
对于A中的a1,为私有属性,补充下:
c l a s s 继承默认是p r i v a t e 继承, 而s t r u c t 默认是p u b l i c 继承。
另外子类继承父类的保护(protected)属性,子类对象是不能访问的。
发表于 2021-01-19 14:18:19 回复(0)
没注意私有继承,private
发表于 2022-06-15 12:03:17 回复(0)
对象不可直接访问本类中的私有成员和保护成员。在类中默认的是私有属性,比如说A类中的a1就是私有成员
发表于 2022-04-01 17:53:44 回复(0)
默认是protected
发表于 2018-07-17 17:35:56 回复(1)

1456错,public继承,父类在子类中保持原有访问级别,子类可以访问public和protected变量,private继承,父类成员在子类中变为private成员

发表于 2018-07-17 11:45:39 回复(0)

private类是什么鬼

发表于 2018-07-13 16:55:47 回复(1)