【问题标题】:What is stack based class? [duplicate]什么是基于堆栈的类? [复制]
【发布时间】:2011-04-01 02:14:13
【问题描述】:

可能重复:
How to prevent an object being created on the heap?

你好,

我听说过一个叫做基于堆栈的类的概念。 IE。我们无法使用 new 创建类的实例。

我第一次听到这个。通过私有重载“new”运算符来实现此目的的一种方法。

如果有人知道有关基于堆栈的类的详细信息,请通知我。

【问题讨论】:

    标签: c++ oop


    【解决方案1】:

    遵循Factory 模式而不是重载 new 运算符。

    • 创建此类新实例的静态方法。
    • 获取最后一个实例(从栈顶)的访问方法

    【讨论】:

    • 我最近听到很多关于使用工厂而不是重载“新”...这是为什么呢?
    • ''获取最后一个实例(从栈顶)的访问方法'' ---- ???你能更详细地解释一下吗?
    【解决方案2】:

    一切都在实例化中:

    AnotherClass::SomeMethod(...) {
      MyClass stackBased;
      MyClass *heapBased;
    
      *heapBased = new MyClass();
      *heapBased->DoSomething();
      delete heapBased;
    
      stackBased.DoSomething();
    
      ...
    }
    

    基于堆栈的类会在堆栈上自动分配、实例化和解除分配,而基于堆的类则需要您自己完成。

    【讨论】:

    • 这不是问题。问题是,您将如何阻止您的代码 sn-p 编译?你对MyClass 做了什么,以至于“我们不能使用 new 创建类的实例”(引用上面的问题)。
    • 抱歉,问题误解了。但在这种情况下,正如 KennyTM 所说,这个问题可能是重复的。
    猜你喜欢
    • 1970-01-01
    • 2023-03-09
    • 1970-01-01
    • 2011-06-25
    • 1970-01-01
    • 2016-09-16
    • 1970-01-01
    • 2020-12-04
    • 2014-02-28
    相关资源
    最近更新 更多