C++ 在C+中创建实例时的内存分配+;
请解释创建实例时的内存分配C++ 在C+中创建实例时的内存分配+;,c++,oop,memory-management,C++,Oop,Memory Management,请解释创建实例时的内存分配 class simpleTestFactory { public: static simpleTest* Create() { return new simpleTest(); } } class simpleTest { private: int x,y,z; public: int printTest() { cout<<"\n This tes
class simpleTestFactory
{
public:
static simpleTest* Create()
{
return new simpleTest();
}
}
class simpleTest
{
private:
int x,y,z;
public:
int printTest()
{
cout<<"\n This test program";
}
}
int main()
{
simpleTest* s1=simpleTestFactory::Create();
.
.
s1=simpleTestFactory::Create();
}
类simpleTestFactory
{
公众:
静态simpleTest*创建()
{
返回新的simpleTest();
}
}
类simpleTest
{
私人:
int x,y,z;
公众:
int printest()
{
库特
在这种情况下,会删除第一个创建的实例内存吗
不,不会。您必须通过调用delete
或首先使用智能指针来解除分配它
(我假定S1类型为 SimeTest**/Cuff>,即指向“代码> SimeTestEng/Cuth>的指针,否则代码不正确C++” 首先,当您传递指向对象的指针时,程序不会编译。应该是:
simpleTest *s1 = simpleTestFactory::Create();
^^^
内存管理必须在C++中手工完成。
delete s1; // do it before new allocation to s1.
还记得,在C++中,创建一个带有<代码>新< <代码>的对象不是强制性的,它可以简单到:
simpleTest obj; // automatic object, no explicit deallocation
[对于自动垃圾收集,您也可以使用]。
尝试单例类型模式。只有在尚未创建实例时,您才能创建实例。不确定您的用例。单例模式还假设对象实例将被删除。因此,您需要实现特殊的方法
考虑到Thangaraj的问题,不要忘记类定义之后的“;”。是的,您必须通过delete调用显式删除对象。为了避免这种情况,您可以使用智能指针。使用智能指针,例如共享\u ptr
或唯一\u ptr
我需要为整个项目创建单个实例,如何使用created inst多个对象的引用。谢谢,我想为整个项目创建一个实例