gpt4 book ai didi

c++ - 我可以在类定义中实例化当前类的新对象吗

转载 作者:搜寻专家 更新时间:2023-10-31 02:04:58 24 4
gpt4 key购买 nike

#include <iostream>

class A
{
public:
A(int n = 1) : i(n) {}

void Transform(int j)
{
// I want to create a new object and assign that object to "this"
A *obj = new A(j);
delete this;
this = obj;
}
private:
int i;

};

我可以在类 A 的函数 Transform() 中实例化类 A 的新对象并将新对象分配给 this 同时删除由 this 表示的旧对象?

最佳答案

你不能赋值给this,但你仍然可以用A::Transform()创建的本地对象交换this代表的对象:

#include <iostream>

class A
{
public:
A(int n = 1) : i(n) {}

void Transform(int j)
{
A obj(j); // create a new object A
std::swap(*this, obj);
}
private:
int i;

};

关于c++ - 我可以在类定义中实例化当前类的新对象吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52662855/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com