【发布时间】:2017-08-16 23:31:30
【问题描述】:
我不确定我是否已经很好地表达了这个问题,因为我是 C++ 新手,但我想知道为什么在下面的代码中,变量 xyz 可以像这样分配
class Fraction {
public:
int num, denom;
int xyz = 0;
// Constructors
Fraction() {
num = 0;
denom = 1;
}
Fraction(int n, int d) {
num = n;
denom = d;
}
};
但是如果这样写
class Fraction {
public:
int num, denom;
int xyz;
xyz = 0;
// Constructors
Fraction() {
num = 0;
denom = 1;
}
Fraction(int n, int d) {
num = n;
denom = d;
}
};
在编译时返回错误,即:
error: C2059: syntax error: '='
和
error: C2238: unexpected token(s) preceding ';'
【问题讨论】:
-
你想要理由吗?
-
方法是可以执行语句的一段代码。在类内部的方法之外,您可以拥有的只是带有/不带有初始化的声明。
xyz=0是一个声明而不是声明/初始化,因此是不允许的。 -
如果我错了,请纠正我(我几乎可以肯定是这样),但在我看来,'int xyz = 0' 都声明 xyz 是一个整数并将其值设置为零,而'xyz = 0' 只做后者。
标签: c++ initialization variable-assignment