首页 > 解决方案 > C++ 你能在构造函数或析构函数中引用 this 指针吗?

问题描述

老实说,这只是一个一般性问题,我没有需要修复的代码。我只是好奇你是否可以this在构造函数或析构函数中引用指针。

一个小的示例代码也将不胜感激,所以我可以继续。

标签: c++constructorthisdestructor

解决方案


构造函数和析构函数都可以this像所有其他方法一样访问指针,除非它们是static, (我的意思是方法)。

例子:

#include <iostream>

class C {

public:
    int *a;

    C() {
        std::cout << "calling constructor\n";
        this->a = new int(5);
    }
    ~C() {
        std::cout << "\ncalling destructor";
        delete this->a;
    }
};

int main() {
    
    C c{};
    std::cout << *c.a;
}

输出:

calling constructor
5
calling destructor

这是一个简化版本,请注意,当一个类需要用户定义的析构函数时,它很可能还需要用户定义的复制构造函数和用户定义的复制赋值运算符,如规则三中所定义。


推荐阅读