gpt4 book ai didi

c++ - 访问私有(private)类或 protected 类的构造函数?

转载 作者:行者123 更新时间:2023-11-30 05:26:44 25 4
gpt4 key购买 nike

如果我有一个只应由其父类实例化的子类,friend 是否是访问私有(private)类或 protected 类的构造函数的适当方法?

澄清一下,已经有一些问题建议将其作为答案。我的问题具体是关于这是否是唯一的答案,如果不是,它是否最适合这种情况。

例子:

class Class_A {
public:
class Class_B {
// Adding 'friend' keyword here
friend class Class_A;

int _value;

Class_B(
int value)
:
_value(value)
{
}
};

protected:
static Class_A::Class_B createB(
int value)
{
return Class_B(value);
}
};

最佳答案

归功于@Angew 更正了此答案的第一个版本。更新来了:

您实际上使用了错误的术语:Class_B 不是 Class_B 的子类。正确的术语是:嵌套类。在另一个类中声明一个类所隐含的关系如下:

嵌套类是封闭类的成员,因此具有与成员相同的访问权限(嵌套类基本​​上是封闭类的隐式友元)。

即嵌套类可以访问封闭类的 protected 和私有(private)成员,但反之则不行。因此,如果您想调用私有(private)或 protected 方法(例如构造函数),让他们成为 friend 是可行的方法。

关于c++ - 访问私有(private)类或 protected 类的构造函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37613815/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com