gpt4 book ai didi

c++ - 在 C++ 中,如果我引用一个带有释放析构函数 ~MyClass 的对象,超出范围的引用会调用析构函数吗?

转载 作者:行者123 更新时间:2023-11-30 02:06:13 25 4
gpt4 key购买 nike

以下是否总是有效?

class MyCLass {
int *pInt;
public:
MyCLass() {
pInt = new int;
*pInt = 42;
}
~MyCLass() {
delete pInt;
printf("Goodbye cruel world!");
}
void func1() {
printf("Hello World %d", *pInt);
}
};

MyCLass foo;
{
MyClass &bar = foo;
//Do stuff
}
foo.func1();

我担心在完全模拟原始对象 bar 的任务中会导致在超出范围时调用析构函数。

最佳答案

不,不会的。在您的示例中,存储与 foo 完全相关。当 foo 超出范围时,将调用析构函数。

当然,如果您仍然有对该对象的引用,该引用将引用一个现在不存在的对象,这可能会给您带来问题。

引用不模拟原始对象。它所做的只是说,当该对象存在时,通过引用进行的任何调用都将重定向到该对象。

关于c++ - 在 C++ 中,如果我引用一个带有释放析构函数 ~MyClass 的对象,超出范围的引用会调用析构函数吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8957524/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com