我正在阅读一些东西,并遇到了这个:
当变量超出范围时调用析构函数
所以我的问题是没有析构函数的变量会发生什么?
举个例子:
class A {
public:
A () { }
};
void foo () {
A a;
}
int main (void) {
foo();
}
那么在这种情况下是a()?a分配用于销毁的内存是否在foo()完成后销毁?
比我有这个例子:
class A {
std::vector <int> aa;
public:
A () : aa(5) { }
};
void foo () {
A b;
}
int main (void) {
foo();
}
在这种情况下,分配用于b销毁的内存foo()是否完成?
再澄清一点,我知道这一点:
class A {
public:
A () { }
};
相当于
class A {
public:
A () { }
inline ~A() = default;
};
但我的问题是,这个内联破坏foo()是否在完成时调用?
编辑:什么时候inline默认添加了析构函数?