关于C++构造函数的问题

问题描述:

我是C++的新手,我还没有看到这种构造函数,它是做什么的?关于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)是什么意思?演员?

+0

改变其在构造函​​数体值更有效开始阅读了坚实的入门书,如从柯尼希&武加速C++ – 2011-05-06 19:33:15

+0

你可以在这里找到不错的入门书籍的列表:HTTP://计算器。com/questions/388242/the-definitive-c-book-guide-and-list – 2011-05-06 19:53:46

+0

构造函数只是创建用户定义对象 – 2011-05-06 20:52:21

是上面的代码有效吗?

是的。

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

这就是所谓的初始化列表,其副本xx的类成员x

+0

的唯一方法,您可以将它想象为使用值xx调用成员x的“构造函数” 。 – buc 2011-05-06 18:52:47

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

:之后和身体(空括号)之前的东西是初始值列表。它用xx初始化成员变量x

从C++ FAQ中查看本节:http://www.parashift.com/c++-faq-lite/ctors.html#faq-10.6

+0

+1链接。我实际上正在寻找一个解释**初始化列表**的线程,但徒劳无功。我想,一旦我看到它精心解释。 – Mahesh 2011-05-06 18:59:11

这是一个带初始值设定项的构造函数。

x(xx)的初始化x,其中的xx

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

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

当您初始化引用成员,常量成员的值或将参数转发给基础构造函数时,需要此类初始化。

这是在其他情况下可选的,像这样的,其中值可能已明确在构造函数体设置(但是这可以说是更快,因为它是作为分配内存初始化)。

字符串:x(xx)被称为初始值设定项。正如你可以看到它仅在构造函数中有效。效果是用值xx初始化x。所以,你的代码使两个A的对象 - 一个拥有10的X和其他的5

这是不是让被初始化,然后通过写入x=xx;