关于c++中构造函数的问题

发布于 2024-11-05 06:20:22 字数 234 浏览 4 评论 0原文

我是c++新手,我还没有见过这种构造函数,它是做什么的?

class A {
    int x;
public:
    A(int xx):x(xx) {}
};

int main() {
    A a(10);
    A b(5);
    return 0;
}

上面的代码有效吗?
这个构造函数是做什么的? A(int xx):x(xx) 是什么意思?演员阵容?

I am newbie to c++, I have not yet seen this kind of constructor, what does it do?

class A {
    int x;
public:
    A(int xx):x(xx) {}
};

int main() {
    A a(10);
    A b(5);
    return 0;
}

Is the code above valid?
What does this constructor do? A(int xx):x(xx) means what? A cast?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(7

凉城已无爱 2024-11-12 06:20:22

上面的代码有效吗?

是的。

这个构造函数做什么? A(int xx):x(xx) 是什么意思?

它被称为初始化列表,它将xx复制到类成员x

is the code above valid?

Yes.

what does this constructor do? A(int xx):x(xx) means what?

It is called initializer list which copies xx to the class member x.

若沐 2024-11-12 06:20:22

: 之后和正文之前(空大括号)的内容是一个初始化列表。它用xx初始化成员变量x

请参阅 C++ 常见问题解答中的此部分:http://www.parashift .com/c++-faq-lite/ctors.html#faq-10.6

The stuff after the : and before the body (the empty braces) is an initializer list. It initializes the member variable x with xx.

See this section from the C++ FAQ: http://www.parashift.com/c++-faq-lite/ctors.html#faq-10.6.

她比我温柔 2024-11-12 06:20:22

字符串 :x(xx) 称为初始值设定项。正如您所看到的,它仅对构造函数有效。效果是用值 xx 初始化 x。因此,您的代码创建了两个 A 对象 - 一个的 x 为 10,另一个的 x 为 5。

这比让它初始化然后通过编写 x=xx;< 在构造函数主体中更改其值更有效。 /代码>

The string :x(xx) is called an initializer. As you can see it's valid on only a constructor. The effect is to initialize x with the value xx. So your code makes two A objects - one has an x of 10 and the other of 5.

This is more efficient than letting it be initialized and then changing its value in the body of the constructor by writing x=xx;

冷︶言冷语的世界 2024-11-12 06:20:22

这称为初始化列表。当调用构造函数时,私有变量 x 将被初始化为 xx。

That is called an initialization list. The private variable x will be initialized with xx when the constructor is called.

孤独患者 2024-11-12 06:20:22

这是一个带有初始化器的构造函数。

x(xx) 使用 xx 的值初始化 x

That's a constructor with an initializer.

The x(xx) initializes x with the value of xx

拥抱我好吗 2024-11-12 06:20:22

A(int xx) : x(xx) 使用 xx 的值初始化数据成员 x

A(int xx) : x(xx) initializes the data member x with the value of xx.

铁憨憨 2024-11-12 06:20:22

代码有效:成员变量“x”正在“基/成员初始值设定项列表”中设置值。

当您初始化引用成员、常量成员的值或将参数转发到基本构造函数时,需要这种类型的初始化。

在其他情况下,它是可选的,例如本例,该值可以在构造函数主体中显式设置(但这可以说更快,因为它是在分配内存时初始化的)。

The code is valid: The member variable "x" is being set a value in the "base/member initializer list".

This type of initialization is required when you are initializing a value for a reference member, constant member, or to forward arguments to the base constructor.

It is optional in other cases, like this one, where the value could have been explicitly set in the constructor body (but this is arguably faster, since it is initialized as memory is allocated).

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文