gpt4 book ai didi

c# - 从 C++ 到 C# 的面向对象设计帮助

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

嘿,我通常会遇到这样一种情况,我会创建一个只应由一个或几个类实例化的类。在这种情况下,我会将其构造函数设为私有(private),并使其成为应该能够实例化它的对象的友元类。例如(在 C++ 中):

class CFoo
{
friend class CFoo;

// private ctor because only a select few classes should instantiate
private:
CFoo()
{
... Do stuff
}
}

class CBar
{
// CBar is one of the few classes that only need to use CFoo

CFoo *m_pFoo;

CBar()
{
m_pFoo = new CFoo;
}
}

所以我的问题是:这是愚蠢的吗?还是有更好的方法来实现这一目标?考虑到该语言完全缺少 friend 关键字,我对它与 C# 一起工作的方式特别感兴趣。谢谢。

最佳答案

这里的目标似乎是在你有一个工作的 CBar 之前你不能有一个 CFoo。

您可以使用 C# 实现相同的效果,方法是为 CFoo 提供私有(private)构造函数,然后在 CFoo 中创建一个静态方法,该方法采用 CBar 参数并调用所述构造函数并返回新的 CFoo。

这类似于 System.Drawing.Graphics.FromImage(Image image) 方法。

为什么C#没有friend关键字的问题已经被覆盖了elsewhere .

关于c# - 从 C++ 到 C# 的面向对象设计帮助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/303668/

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