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

标签 c++ class oop

#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/

相关文章:

ruby - 将实例变量设置为 'self' ?

class - 为什么我们需要在Hadoop程序中显式设置输出键/值类?

c++ - 专门对中的自定义访问器名称

c++ - 函数指针的静态映射

c++ - 来自 n3290 :Argument-dependent name lookup 的一个点

java - DTO 转换层

java - 设计实现过滤链

c++ - 列大小不同的二维数组的动态内存分配

c# - 类中私有(private)字段值中的数据有多安全,如何使其更安全?

delphi - "Object Aware"图形用户界面控件