由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Programming版 - 程序结束时destructor被call的顺序是什么样的?
相关主题
c++ initialize struct构造函数里的异常处理
几个问题private destructor
问一个简单C++问题Forward declaration with unique_ptr
【C++】请问这样有没有memory leak?多谢a question about CAST
static initialization dependency c++c++标准函数传递一问
help!无法编译一个package码工试题 (转载)
问个面试问题,请教弱问一下
急问:compile and build dependencypthread_create inside a constructor
相关话题的讨论汇总
话题: destructor话题: 顺序话题: class话题: double话题: int
进入Programming版参与讨论
1 (共1页)
mw
发帖数: 525
1
比如说
main(){
class a;
class b;
..
..
..
}
最后结束了,a和b哪个的destructor先被叫?
i***h
发帖数: 12655
2
should be the reverse order, I think
I am not sure if A is always constructed before B, though. (Can compiler
optimization change the order in the code above?)
d***q
发帖数: 1119
3
reverse order...it actually like operation in stack.
first in last out.
x****u
发帖数: 44466
4
最好不要依赖这个顺序。如果你希望控制顺序,应该用{}才是正道。

【在 mw 的大作中提到】
: 比如说
: main(){
: class a;
: class b;
: ..
: ..
: ..
: }
: 最后结束了,a和b哪个的destructor先被叫?

n****g
发帖数: 150
5
writing test才是王道。
i***h
发帖数: 12655
6
怎么用{}?

【在 x****u 的大作中提到】
: 最好不要依赖这个顺序。如果你希望控制顺序,应该用{}才是正道。
p***o
发帖数: 1252
7
{
A a;
{
B b;
}
}

【在 i***h 的大作中提到】
: 怎么用{}?
i***h
发帖数: 12655
8
有规定这个不会被优化成
{
{
B b;
}
A a;
}
么?

【在 p***o 的大作中提到】
: {
: A a;
: {
: B b;
: }
: }

t****t
发帖数: 6806
9
这个顺序当然可以依赖, 离开scope的时候, destructor的顺序总是和constructor相反
的.

【在 x****u 的大作中提到】
: 最好不要依赖这个顺序。如果你希望控制顺序,应该用{}才是正道。
i***h
发帖数: 12655
10
编译时有可能改变程序行次序么?
A a;
B b;
能保证 a 在 b 前么?
Thanks

【在 t****t 的大作中提到】
: 这个顺序当然可以依赖, 离开scope的时候, destructor的顺序总是和constructor相反
: 的.

相关主题
help!无法编译一个package构造函数里的异常处理
问个面试问题,请教private destructor
急问:compile and build dependencyForward declaration with unique_ptr
进入Programming版参与讨论
t****t
发帖数: 6806
11
能保证a在b前.

【在 i***h 的大作中提到】
: 编译时有可能改变程序行次序么?
: A a;
: B b;
: 能保证 a 在 b 前么?
: Thanks

T*****9
发帖数: 2484
12
有时候循环展开就是利用这个,呵呵

【在 t****t 的大作中提到】
: 能保证a在b前.
i***h
发帖数: 12655
13
展开说说?

【在 T*****9 的大作中提到】
: 有时候循环展开就是利用这个,呵呵
z**k
发帖数: 629
14
楼主的示例似乎有错,是不是想说这样:
class a
{
...
};
class b
{
...
};
main(){
a a1;
b b1;
..
..
..
}
那么在main函数的"}"处,b1的destructor先被调用,然后再调a1的析构函数.
x****u
发帖数: 44466
15
这个一定不会,应该是语法定义。在WTL的sample里面就有这么写的。

【在 i***h 的大作中提到】
: 有规定这个不会被优化成
: {
: {
: B b;
: }
: A a;
: }
: 么?

p****o
发帖数: 1340
16
对呀。现在的compiler很严格,比如说
class A
{
public:
A(double a, int b);
double a_;
int b_;
};
A::A(double a, int b) : b(b_), a(a_) {}

【在 t****t 的大作中提到】
: 这个顺序当然可以依赖, 离开scope的时候, destructor的顺序总是和constructor相反
: 的.

p***o
发帖数: 1252
17
这也就是gcc下面的一个warning而已把。

【在 p****o 的大作中提到】
: 对呀。现在的compiler很严格,比如说
: class A
: {
: public:
: A(double a, int b);
: double a_;
: int b_;
: };
: A::A(double a, int b) : b(b_), a(a_) {}

t****t
发帖数: 6806
18
initializer-list执行的顺序是严格按照成员声明的顺序, 而不是initializer-list的
顺序.

【在 p***o 的大作中提到】
: 这也就是gcc下面的一个warning而已把。
p***o
发帖数: 1252
19
哦,这是当然,我以为他说那么写会报错。

【在 t****t 的大作中提到】
: initializer-list执行的顺序是严格按照成员声明的顺序, 而不是initializer-list的
: 顺序.

1 (共1页)
进入Programming版参与讨论
相关主题
pthread_create inside a constructorstatic initialization dependency c++
Re: can destructor be static?help!无法编译一个package
some C++ interview questions问个面试问题,请教
Python 如何自动import multiple files急问:compile and build dependency
c++ initialize struct构造函数里的异常处理
几个问题private destructor
问一个简单C++问题Forward declaration with unique_ptr
【C++】请问这样有没有memory leak?多谢a question about CAST
相关话题的讨论汇总
话题: destructor话题: 顺序话题: class话题: double话题: int