这有什么危险吗?我不知道其他方法,但它似乎非常可疑。
class cA
{
public:
cA(){}
~cA(){}
int a;
//say class have tons of members..
};
int _tmain( int argc, _TCHAR* argv[] )
{
cA obj;
cA *ptr = new cA;
*ptr = obj;
//ofc there is a 'delete ptr;' after
}
如果我没记错的话,这意味着cA
将创建一个对象并ptr
指向它,我必须这样做才能插入长寿命容器(vector<cA*>
)。
以这种方式将 obj 的内容从堆栈复制到堆是否有效?
编辑可能的解决方案?
class cA
{
public:
cA(){}
~cA(){}
int a;
void Copy( cA & ref )
{
a = ref.a;
}
};
int _tmain( int argc, _TCHAR* argv[] )
{
cA obj;
cA *ptr = new cA;
ptr->Copy( obj );