title: 630.关于C++构造函数的FAQ outline: deep

下面是一些关于C++构造函数的FAQ。你能回答得出来吗?你可以点链接查看答案,不过是英文版的。他们来自于C++ FAQ Lite。当然,也有中文版的,只可惜中文版的太老了,只更新到了2001年。在C++ FAQ Lite上还有很多关于其它部分的FAQ,大家可以去看看。

[1] 构造函数是用来干什么的?

[2] List x; 和 List x();有什么不同?

[3] 是否一个类的构造函数可以调用另一个构造函数来初始化自己?

[4] 是否Fred类的默认的函数函数就一定是Fred::Fred()?

[5] 如果要创建一个Fred 对像数组,什么样的构数函数会被调用?

[[6] 构造函数初始化成员变量时,用 “初始化列表” 还是 “赋值”?](http://www.parashift.com/c++-faq-lite/ctors.html#faq-10.6 "[6] Should my constructors use "initialization lists" or "assignment"?")

[7] 在构造函数中用this 指针是否有问题?

[[8]什么是“名字构造函数”(Named Constructor Idiom)?](http://www.parashift.com/c++-faq-lite/ctors.html#faq-10.8 "[8] What is the "Named Constructor Idiom"?")

[9] “值返回”意味着额外的拷贝吗?

[10] 为什么我们不能在构造函数初始化列表中初始化一个 static 成员变量?

[11] 为什么一个有 static 成员变量的类会有链接错误?

[[12] 什么是“static initialization order fiasco”?](http://www.parashift.com/c++-faq-lite/ctors.html#faq-10.12 "[12] What's the "static initialization order fiasco"?")

[[13] 我该如果避免 “static initialization order fiasco”?](http://www.parashift.com/c++-faq-lite/ctors.html#faq-10.13 "[13] How do I prevent the "static initialization order fiasco"?")

[14] 为什么 construct-on-first-use 什么静态变量而不是指针?

[[15] 怎么才能避免静态成员中的“static initialization order fiasco” ?](http://www.parashift.com/c++-faq-lite/ctors.html#faq-10.15 "[15] How do I prevent the "static initialization order fiasco" for my static data members?")

[[16] 我是否要为内建类型的“static initialization order fiasco”而担心?](http://www.parashift.com/c++-faq-lite/ctors.html#faq-10.16 "[16] Do I need to worry about the "static initialization order fiasco" for variables of built-in/intrinsic types?")

[17] 如果构造函数出错了怎么办?

[[18] 什么是“命名参数惯用法”(Named Parameter Idiom)?](http://www.parashift.com/c++-faq-lite/ctors.html#faq-10.18 "[18] What is the "Named Parameter Idiom"?")

[19] 为什么我通过Foo x(Bar())声明一个Foo 对象会得到一个错误?