"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",这是错误的。因为私有派生类无法访问其基类的保护成员,即使是在派生类内部也不行。只有公共和保护派生类可以访问其基类的保护成员。 为什么私有派生类无法访问基类的保护乘员?
时间: 2024-03-07 10:51:51 浏览: 74
私有派生类无法访问基类的保护成员,是因为保护成员的访问权限是只有类本身及其子类可以访问,而私有派生类虽然可以继承基类的所有成员,但是这些成员都被视为私有成员,只能在派生类内部被访问,而不能被派生类之外的函数和对象访问。私有派生类只能访问和使用基类的公共成员和私有成员,不能访问和使用基类的保护成员。
这是因为 C++ 对于继承权限的限制是:公有派生类可以访问基类的公有成员和保护成员,但不能访问基类的私有成员;保护派生类可以访问基类的公有成员和保护成员,但不能访问基类的私有成员;私有派生类可以继承基类的所有成员,但是这些成员都被视为私有成员,只能在派生类内部被访问,而不能被派生类之外的函数和对象访问。
相关问题
The private derived class cannot 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",这是错误的。因为私有派生类无法访问其基类的保护成员,即使是在派生类内部也不行。只有公共和保护派生类可以访问其基类的保护成员。
声明一个基类baseclass,有整型成员变量number,构造其派生类derivedclass
可以这样实现:
```c++
class baseclass {
public:
int number;
baseclass(int n) : number(n) {}
};
class derivedclass : public baseclass {
public:
derivedclass(int n) : baseclass(n) {}
};
```
在这个例子中,我们定义了一个名为 `baseclass` 的基类,其中包含一个整型成员变量 `number`,并定义了一个构造函数,该函数接受一个整数参数并将其分配给 `number` 成员变量。
然后,我们定义了一个名为 `derivedclass` 的派生类,它公开继承了 `baseclass`。在 `derivedclass` 中,我们定义了一个构造函数,该函数接受一个整数参数,并将其传递给 `baseclass` 的构造函数,让 `number` 成员变量得以初始化。
这样,我们就完成了一个基类和一个派生类的定义。注意,这里我们使用了公开继承,这意味着 `derivedclass` 可以访问 `baseclass` 中的公共成员和方法。
阅读全文