gpt4 book ai didi

c++ - 为什么/如何清理静态的机制获得允许它调用私有(private)成员的访问权限?

转载 作者:太空狗 更新时间:2023-10-29 20:14:28 25 4
gpt4 key购买 nike

我测试了一种在 C++ 中声明单例类的模式,该模式使默认的 析构函数 为“私有(private)”,但该模式并未通过任何成员调用使用此析构函数。

我使用 gnu g++ 编译器在 Ubuntu QQ 上测试了这段代码——虽然指定为“私有(private)”,但在程序终止时调用了析构函数。

谁/什么/如何调用这个析构函数,因为它被指定为私有(private)的?

注意:我来自 Delphi/Object Pascal 世界,ObjectPascal 不支持静态类声明——尽管有多种创建单例的方法。根据我的经验,'private'('strict private'...) 是PRIVATE。我发现在 C++ 中情况并非如此。

解释?

最佳答案

该对象通常由一个名为getInstancestatic 成员函数实例化,然后它会为您提供对该对象的引用。因为它是一个成员函数,所以它可以访问构造函数。

经典例子:

class S
{
public:
// This is a member function so can access the constructor of S
static S& getInstance()
{
static S instance;
return instance;
}
private:
S() {};
S(S const&);
void operator=(S const&);
};

关于c++ - 为什么/如何清理静态的机制获得允许它调用私有(private)成员的访问权限?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16404354/

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