What are the benefits of uwing * ? Example:
QTextBox * myTextBox = new QTextBox("hello");
in stead of:
QtextBox myTextBox("hello");
Which one is better, why ?
Printable View
What are the benefits of uwing * ? Example:
QTextBox * myTextBox = new QTextBox("hello");
in stead of:
QtextBox myTextBox("hello");
Which one is better, why ?
You might use RAII ... since it safely releases resources. Not sure what you were asking. From what I've read Qt helps out greatly.
Well... the question is for curiosity.
I would like to know when and why I should use the "*" to create a new instance of a class in stead of instantiating without it.
class test
{
.
.
}
int main()
{
test * myTest = new test();
// or perhaps I should just use:
test myTest();
}
I would default to non-pointer types unless design dictates it ... employing RAII for safety in releasing resources. If you need pointer types, I'd recommend using smart pointers (i.e. reference counting pointers). But, the question is so general I'm not sure I'm answering correctly. :)
Here's what I've traditionally used for smart pointers. It's from the Boost library. I'll never understand why a smart pointer wasn't included in the C++ Standard. Qt may provide a smart pointer ... don't know yet.
http://www.boost.org/libs/smart_ptr/shared_ptr.htm
The Qt Tutorial address memory management issues ... concerning Qt widgets.
From the Qt Tutorial -- Chapter 4
"Note that quit is a local variable in the constructor. MyWidget does not keep track of it; Qt does, and will automatically delete it when the MyWidget object is deleted. This is why MyWidget doesn't need a destructor. (On the other hand, there is no harm in deleting a child when you choose to. The child will automatically tell Qt about its imminent death.)"
Code:
{ ... quit->setGeometry(62, 40, 75, 30); ... }
Simple, use pointers when you need the object to stay in memory. Regular objects are created on the stack, and thus destroyed quite quickly.