我是说,我们不能这样做:
class A {
int i;
char c;
public:
A(int i = 0, char c = ' ') : this->i(i), this->c(c) {}
};是因为实例还没有创建,还是类似的原因?
发布于 2015-04-27 09:08:41
如果查看overview of the C++ grammar,特别是mem-initializer-list部分,您会看到初始化器列表应该由identifier(expression)或classname(expression)条目组成。identifier被定义为数字和非数字(a-z,A-Z,_)组成的字符串。
您的this->identifier(expression)与此不匹配,因此不允许使用。无论如何,这是没有必要的,因为这里没有歧义。identifier始终是类的成员变量,因此很清楚引用哪个i。
class A {
int i;
char c;
public:
A(int i = 0, char c = ' ') : i(i), c(c) {}
};https://stackoverflow.com/questions/29885552
复制相似问题