从构造函数中删除此指针
Deleting this pointer from constructor
我尝试从构造函数中删除此指针,之后当我通过成员函数访问私有变量时,该变量被正确获取。
如果我尝试再次删除它(在构造函数或 func(( 中(,我的程序崩溃。这意味着此指针在构造函数中被删除得很好。
class B
{
int a;
public:
B()
{
std::cout << this;
std::cout << "nConstructorn";
delete this;
a = 5;
std::cout << "n" << this;
}
~B()
{
std::cout << "Destructorn";
}
void func()
{
std::cout << "n" << a << " Funcn";
}
};
int main(int argc, char* argv[])
{
B *b = new B();
b->func();
return 0;
}
但是调用 func(( 会打印正确的输出。由于删除了这个,我预计会出现一些错误。为什么 func(( 的隐式参数在删除时没有更新?
delete this
是允许的,而且很好。但是,在删除类后访问类的任何成员是不允许的,并且是未定义的行为。您的代码看起来有效是UB可以采用的一种形式。
相关文章:
- 使用函数引用指向节点的指针删除链表中的节点?
- 如何通过指向元组的共享指针删除对象
- 函数内的 C++ 指针删除
- 一个对象的两个指针.删除了一个指针,对象仍然存在
- 如何通过存储在 std::list 中的指针删除对象?
- C++中的智能指针删除
- 将C 中的每个指针删除作为阵列的指针安全吗?
- 使用 C 字符串和指针.删除除小写和空格以外的任何字符
- 在特定情况下,指针删除和铸造之间的关系不清楚
- 提升属性树:使用指向节点及其父节点的指针删除节点
- 警告C4150在尝试包装本机C 类时,指向不完整类型的指针删除
- C++ Valgrind 双指针删除,用于防止内存泄漏
- C 通过指向其基类的指针删除派生对象
- 将指针删除到数组
- 当通过其中一个指针删除对象时,C++将所有指针设置为null
- 智能指针删除器和"using"名称为"pointer"关键字
- 通过指向其基的指针删除 POD 对象是否安全
- 模板化的出列无效指针:删除类时失败
- 使用"this"指针删除
- (C++) list.error 方法和使用指针删除内存