我有以下 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]) {}
};
注意复制构造函数中的赋值。-Wall -Wextra
代码工作,编译良好,编译器(gcc)即使有标志也不会抱怨。编译器会自动将编译器重写为此吗?
Stack(const Stack& s) : size(s.size), x(new int[size]) {}
还是有什么其他的魔法?我注意到当我更改定义顺序时,编译器会抱怨非按顺序初始化。所以我认为这是我提到的情况。我在文档中找不到任何内容,ASM 输出也对我没有帮助。