gpt4 book ai didi

java - 简单的 Java 代码,无法创建 C++ 等效代码(私有(private)静态成员和公共(public)访问器方法)

转载 作者:行者123 更新时间:2023-11-28 00:40:38 25 4
gpt4 key购买 nike

我是一名拥有 7 年经验的 Java 开发人员,但我对 C++ 几乎完全陌生。这不是家庭作业,甚至不是真正的有偿工作。我只是钻研 C++,但在模拟我在 Java 中经常使用的这一特定模式时遇到了麻烦。

基本上(在 Java 中):

    public class ExampleManager
{
private static Example _example;

public static Example getExample()
{
return _example;
}

public static void setExample(Example example)
{
_example = example;
}
}

到目前为止,我已经根据我所学的 C++ 知识尝试了大约四种变体。我发现用相同的语法传递“example”可以得到一个存储在类中的“example”的拷贝。我了解指针背后的大部分逻辑,只是不了解很多细节。这个例子对我有很大帮助。

如果有人可以给我等效的 C++ 代码,以便我可以逐行分解它并逐步执行它,我将非常感激。

我不像在 Java 中那样使用这种模式,但它是我用来维护对单个实例成员的线程安全访问的模式的骨架。

最佳答案

C++ 中基本等效的代码是这样的:

class ExampleManager
{
private:
static std::shared_ptr<Example> _example;

public:
static std::shared_ptr<Example> getExample()
{
return _example;
}

static void setExample(std::shared_ptr<Example> example)
{
_example = example;
}
};

它利用了 std::shared_ptr 类,它为您完成大部分内存处理工作(您只需要 new 对象,基本上就像Java)。

我们在这里不使用“原始”指针(即 Example *); “原始”指针的使用通常不受欢迎(除非您在资源有限或接近硬件的环境中工作),因为它在性能方面对您的帮助很小,但会导致丑陋的问题(内存泄漏,双重删除) , ...) 如果不仔细考虑的话。

请注意,上面使用的 shared_ptr 只是自 C++11 以来标准的一部分。大多数最近的编译器已经接受了它的用法,如上所示;对于一些年龄较大的 child ,您可能需要做一些特殊的事情:

  • 例如对于 g++ <= 4.6,将 -std=c++0x 添加到编译命令行
  • 对于某些人,您可能必须使用 std::tr1::shared_ptr
  • 如果以上两个选项都失败了,你可以使用boost::shared_ptr来自 boost 库。

关于java - 简单的 Java 代码,无法创建 C++ 等效代码(私有(private)静态成员和公共(public)访问器方法),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19087890/

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