关于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)是什么意思?演员?
是上面的代码有效吗?
是的。
这个构造函数是做什么的? A(int xx):x(xx)是什么意思?
这就是所谓的初始化列表,其副本xx
的类成员x
。
的唯一方法,您可以将它想象为使用值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。
+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;
改变其在构造函数体值更有效开始阅读了坚实的入门书,如从柯尼希&武加速C++ – 2011-05-06 19:33:15
你可以在这里找到不错的入门书籍的列表:HTTP://计算器。com/questions/388242/the-definitive-c-book-guide-and-list – 2011-05-06 19:53:46
构造函数只是创建用户定义对象 – 2011-05-06 20:52:21