C++ 你能在构造函数或析构函数中引用 this 指针吗?
C++ Can you refer to the this pointer in a constructor or a destructor?
老实说,这只是一个一般性问题,我没有需要修复的代码。我只是想知道您是否可以在构造函数或析构函数中引用 this
指针。
一个小的示例代码也将不胜感激,所以我可以跟随。
构造函数和析构函数都可以像所有其他方法一样访问 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
这是一个简化版本,请注意,当 class 需要用户定义的析构函数时,它很可能还需要用户定义的复制构造函数和用户定义的复制赋值运算符,如 [=14] 中所定义=].
老实说,这只是一个一般性问题,我没有需要修复的代码。我只是想知道您是否可以在构造函数或析构函数中引用 this
指针。
一个小的示例代码也将不胜感激,所以我可以跟随。
构造函数和析构函数都可以像所有其他方法一样访问 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
这是一个简化版本,请注意,当 class 需要用户定义的析构函数时,它很可能还需要用户定义的复制构造函数和用户定义的复制赋值运算符,如 [=14] 中所定义=].