The private derived class cannot use the protected members of its base class.是什么意思并解释为什么是错的
时间: 2024-03-07 07:51:57 浏览: 16
"The private derived class cannot use the protected members of its base class" 意思是私有派生类不能使用其基类的保护成员。这是因为私有派生类继承了基类的所有成员,但是它们都变成了私有成员,而保护成员只能被自身及其子类访问,因此私有派生类无法访问基类的保护成员。
然而,题目中说 "The private derived class can use the protected members of its base class",这是错误的。因为私有派生类无法访问其基类的保护成员,即使是在派生类内部也不行。只有公共和保护派生类可以访问其基类的保护成员。
相关问题
"The private derived class cannot use the protected members of its base class" 意思是私有派生类不能使用其基类的保护成员。这是因为私有派生类继承了基类的所有成员,但是它们都变成了私有成员,而保护成员只能被自身及其子类访问,因此私有派生类无法访问基类的保护成员。 然而,题目中说 "The private derived class can use the protected members of its base class",这是错误的。因为私有派生类无法访问其基类的保护成员,即使是在派生类内部也不行。只有公共和保护派生类可以访问其基类的保护成员。 为什么私有派生类无法访问基类的保护乘员?
私有派生类无法访问基类的保护成员,是因为保护成员的访问权限是只有类本身及其子类可以访问,而私有派生类虽然可以继承基类的所有成员,但是这些成员都被视为私有成员,只能在派生类内部被访问,而不能被派生类之外的函数和对象访问。私有派生类只能访问和使用基类的公共成员和私有成员,不能访问和使用基类的保护成员。
这是因为 C++ 对于继承权限的限制是:公有派生类可以访问基类的公有成员和保护成员,但不能访问基类的私有成员;保护派生类可以访问基类的公有成员和保护成员,但不能访问基类的私有成员;私有派生类可以继承基类的所有成员,但是这些成员都被视为私有成员,只能在派生类内部被访问,而不能被派生类之外的函数和对象访问。
为什么我得到的结果是BASE 10 DERIVED 11
根据你提供的代码和结果,我猜测你的代码和原始代码有所不同。在原始代码中,objs数组中的第二个元素指向的是DERIVED类的对象,因此在循环中,第二次调用hello函数时输出的是字符串“DERIVED”。
而在你的代码中,可能是将DERIVED类中的构造函数移除了,导致objs数组中的第二个元素实际上指向的是BASE类的对象,因此第二次调用hello函数时输出的是字符串“BASE”。
至于输出结果中的10和11,可能是因为你修改了update函数中的逻辑,导致输出结果与原始代码不同。如果你能提供更多的信息,我可以帮你进一步分析。