c++构造函数是protected
时间: 2024-12-19 18:16:22 浏览: 8
在C++中,构造函数作为类的一个组成部分,其访问权限可以通过`public`、`private`或`protected`关键字来指定。如果一个构造函数声明为`protected`,它意味着这个构造函数只能在其继承自的派生类(Derived Class)中直接或间接地被调用[^2]。
下面是一个使用`protected`构造函数的示例:
```cpp
class ProtectedClass {
protected:
// Protected constructor
ProtectedClass() {} // 只能由派生类实例化
private:
// 私有成员不能从外部访问
};
// Derived Class
class Derived : public ProtectedClass {
public:
// 公共构造函数,可以通过Derived类实例化ProtectedClass的对象
Derived() : ProtectedClass() {}
};
// 试图直接实例化ProtectedClass会失败,因为它是protected
try {
ProtectedClass* p = new ProtectedClass();
} catch (const std::exception& e) {
std::cout << "Cannot create a direct instance of ProtectedClass." << std::endl;
}
// 但是可以通过Derived类实例化
Derived d;
```
阅读全文