wxWidgets 使用 'new' 关键字

标签 wxwidgets new-operator keyword

对于wxWidgets,为什么要说:

MyFrame *frame = new MyFrame

代替:

MyFrame frame;

两者有什么区别?第二个更易读且更易于使用,但所有示例都使用第一个,所以我想知道原因是什么。

澄清一下,我知道第二个版本不起作用,但我想知道是否有特定的设计决定导致必须使用第一种形式而不是第二种形式。 TIA。

最佳答案

首先在堆上分配一个新的 MyFrame 实例,并返回指向它的指针。第二个直接在堆栈上创建一个新的 MyFrame 实例。

您需要使用第一种语法的原因是您会将此框架(UI 元素)添加到另一个 UI 元素中,例如窗口。窗口会将指针指向一个框架,并将其添加为子框架。

如果你使用第二种语法,你必须传递一个指向你的堆栈对象(&frame)的指针,它会编译,但是一旦你的方法返回,框架的析构函数就会被调用,因为框架会退出范围。这会“破坏”窗口内的引用。

关于wxWidgets 使用 'new' 关键字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/850368/

相关文章:

c++ - wxRichTextCtrl 不工作?

python - 使用 `*args` ,关键字参数变成位置参数?

c++ - 调用 placement new 时,将指针强制转换为 "void*"有什么影响吗?

c++ - 自定义类的C++数组,没有匹配的函数调用

c - 为什么C有下划线开头的关键字

php - $this 与函数名

c++ - Wxwidgets 问题在另一台计算机上运行二进制文件

c++ - 无模式、无父 wxDialog 仍然总是在 z 顺序的 wxFrame 窗口上方?

python - 在 wxpython 中嵌入实时更新的 matplotlib 图

c++ - 删除使用 new 创建的 2D 或 3D 指针