首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么不能在构造函数初始化器列表中使用'this‘指针?

为什么不能在构造函数初始化器列表中使用'this‘指针?
EN

Stack Overflow用户
提问于 2015-04-27 09:00:24
回答 4查看 110关注 0票数 2

我是说,我们不能这样做:

代码语言:javascript
运行
复制
class A {
    int i;
    char c;
public:
    A(int i = 0, char c = ' ') : this->i(i), this->c(c) {}
};

是因为实例还没有创建,还是类似的原因?

EN

Stack Overflow用户

发布于 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

代码语言:javascript
运行
复制
class A {
    int i;
    char c;
public:
    A(int i = 0, char c = ' ') : i(i), c(c) {}
};
票数 1
EN
查看全部 4 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29885552

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档