c++ - 在 C++ 中使用 this 指针初始化一个类对象

标签 c++ c++11 this this-pointer

C++ 中,我想使用另一个类方法的结果来初始化(或更改)一个类对象。我可以使用 this 指针吗?有没有更好的办法?

虚拟示例:

class c_A {
    public:
    int a, b;

    void import(void);
};

class c_B {
    public:

    c_A create(void);
};

void c_A::import(void) {
    c_B B; 
    *this = B.create();
};

c_A c_B::create(void) {
    c_A A;
    A.a = A.b = 0;
    return A;
};

最佳答案

没有问题。成员函数void import(void);不是常量函数。在这个语句中

*this = B.create();

使用了默认的复制赋值运算符。

Is there a better way?

更好的方法是不使用成员函数,而只是为类的对象使用赋值语句,例如

c_A c1 = { 10, 20 };

c1 = c_B().create();

关于c++ - 在 C++ 中使用 this 指针初始化一个类对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58994186/

相关文章:

c++ - 代码中是否存在可能的竞争条件,为什么?

c++ - 将整数输入数组的方法比 scanf() 或 cin 更快?

javascript - 将函数参数添加到空数组中

javascript - JS This 和模板字面量实践

c++ - 为什么简单的双映射 (std::string <-> int) 不起作用?

c++ - Boost.Program_options - 免费值(没有选项的值)

multithreading - C++11 用 clang 替代 OpenMP

javascript - 使用 JS .call() 方法的原因?

c++ - 初学者问题: Why can't I access an object's members when it is in a vector?

c++ - 使用派生类的数据成员初始化基类