【发布时间】:2019-07-29 09:50:26
【问题描述】:
我有以下 Stack 类。
class Stack{
public:
int size;
int* x;
Stack() : size(10), x(new int[10]) {}
Stack(const Stack& s) : x(new int[size=s.size]) {}
};
注意复制构造函数中的赋值。该代码工作正常,编译良好,编译器(gcc)即使使用-Wall -Wextra 标志也不会抱怨。编译器会自动将编译器改写成这个吗?
Stack(const Stack& s) : size(s.size), x(new int[size]) {}
或者还有什么其他的魔法?我注意到当我更改定义顺序时,编译器会抱怨非按顺序初始化。所以我认为这是我提到的情况。我在文档中找不到任何内容,ASM 输出也对我没有帮助。
【问题讨论】:
标签: c++ constructor order-of-execution member-initialization initialization-order