码迷,mamicode.com
首页 > 其他好文 > 详细

Q&A-1:

时间:2017-10-31 21:38:37      阅读:138      评论:0      收藏:0      [点我收藏+]

标签:add   运行时   代码   函数   dev   变量   too   -o   用户   

Q:

QMenu *file = menuBar()->addMenu(tr(“&File”));
file->addAction(openAction);

QToolBar *toolBar = addToolBar(tr(“&File”));
toolBar->addAction(openAction);
file和toolBar这两个变量是在构造函数内部被定义和赋值的,那岂不是出了构造函数,他们就应该被销毁?

A:

  这里并不能得出这个结论。注意,如果不看源代码,你不能推断出,addMenu() 和 addToolBar() 这两个函数是如何实现的:是在堆上,还是在栈上分配内存空间,你所知道的仅仅是这两个函数返回了一个指针。如果是在栈上,它们必定会在超出作用域被销毁;如果是堆上则不会。(当然,从你所举的例子看,肯定是在堆上分配空间的,否则就像你所说的,一旦出了构造函数就会被销毁)

————————————————————————————————————————————————————————————————————

Q:

“在堆上创建了openAction对象”,这个“堆”应该是与“栈”对应的,请问该如何理解?

A:

使用 new 关键字创建的对象,都是在堆上面分配空间;否则都是在栈上面分配的

 

 

Tips:

  使用 qrc 与不使用 qrc 是完全不同的:前者会编译成二进制代码,直接内嵌到 exe 中;后者会在运行时加载图片。二者适用于不同的场合:前者运行效率更高,但是不能由用户提供并切换;后者可以由用户提供图片并切换显示,适合于用户自定义主题等。

  QMenu *file = menuBar()->addMenu(tr(“&a”)); 等价于 QMenuBar *mb = menuBar();mb->addMenu(tr("&a"));

转自:https://www.devbean.net/2012/08/qt-study-road-2-action/

Q&A-1:

标签:add   运行时   代码   函数   dev   变量   too   -o   用户   

原文地址:http://www.cnblogs.com/AbsolutelyPerfect/p/7763617.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!