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

构造函数构建类的对象,初始化类变量,分配资源(内存、文件、信号量、套接口等等)

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

  前一个是定义List的一个对象,后者则是一个返回值为List 的函数

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

  不可以;举一个例子来看这个问题:

class Foo {
public:
Foo(char x);
Foo(char x, int y);
...
}; Foo::Foo(char x)
{
...
Foo(x, ); // this line does NOT help initialize the this object!!
...
}

  语句:

Foo(x, 0); 

 只是初始化了一个临时对象,而不是this对象,因此,该语句没有起到应有的效果。

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

  不一定,默认构造函数指的是不带参数的构造函数,例如:A::A(int x = 3, int y = 5)

  因此,一个类可以不存在默认构造函数,这是必须注意的!

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

    对于 Fred a[10]; 或者 Fred *a = new Fred(); 如果类Fred存在默认构造函数,则调用十次默认构造函数;如果类Fred不存在默认构造函数,则编译出错;

  对于 Fred a[10] = {Fred(5,7)}; 则调用 Fred(int, int) 构造函数;

[6] 构造函数初始化成员变量时,应该用 “初始化列表” 还是 “赋值”?

  初始化列表;

   优点:1)提高性能;2)

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

[8]什么是“名字构造函数”(Named Constructor Idiom)?

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

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

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

[12] 什么是“static initialization order fiasco”?

[13] 我该如果避免 “static initialization order fiasco”?

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

[15] 怎么才能避免静态成员中的“static initialization order fiasco” ?

[16] 我是否要为内建类型的“static initialization order fiasco”而担心?

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

[18] 什么是“命名参数惯用法”(Named Parameter Idiom)?

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

关于C++构造函数的FAQ的更多相关文章

  1. javascript笔记—— 构造函数

    出处:http://www.cnblogs.com/RicCC/archive/2008/02/15/JavaScript-Object-Model-Execution-Model.html 数据类型 ...

  2. C++11 FAQ中文版--转

    更新至英文版October 3, 2012 译者前言: 经过C++标准委员会的不懈努力,最新的ISO C++标准C++11,也即是原来的C++0x,已经正式发布了.让我们欢迎C++11! 今天获得St ...

  3. 《深度探索c++对象模型》chapter2 构造函数语义学

    关于c++,最常听到的一个抱怨是,编译器背着程序员做了太多事情,conversion运算符是最常被引用的一个例子:jerry schwarz,iostream函数库的建筑师,就曾经说过一个故事,他说他 ...

  4. FusionCharts导出图表常见问题(FAQ)汇总---FusionCharts常见问题大全

    在前面几篇文章中,我们介绍了FusionCharts生成Flash图表常见问题FAQ以及使用中的一些常见报错及调试/解决方法.本文继续介绍FusionCharts导出图表时的一些常见问题(FAQ). ...

  5. C++ 风格与技术 FAQ(中文版)

    Bjarne Stroustrup 的 C++ 风格与技术 FAQ(中文版) 原作:Bjarne Stroustrup    翻译:Antigloss 译者的话:尽管我已非常用心,力求完美,但受水平所 ...

  6. 《FontForge常见问题FAQ》字王翻译版

    <FontForge常见问题FAQ> 字王翻译版 原文: http://fontforge.github.io/en-US/faq/ 翻译: 字王·中国   blog: http://bl ...

  7. 在全局对象(不是指针)的构造函数里不要对std集合做太多操作

    写MaxvisionOnvif的时候,我用个宏把每个Command类注册到了CommandBuilder里面,通过全局对象初始化实现的,如下: void CommandBuilder::Registe ...

  8. .NET 基础 一步步 一幕幕[面向对象之构造函数、析构函数]

    构造函数.析构函数 构造函数: 语法: //无参的构造函数 [访问修饰符] 函数名() :函数名必须与类名相同. //有参的构造函数 [访问修饰符] 函数名(参数列表):函数名必须与类名相同. 作用: ...

  9. javascript工厂模式和构造函数模式创建对象

    一.工厂模式 工厂模式是软件工程领域一种广为人知的设计模式,这种模式抽象了创建具体对象的过程(本书后面还将讨论其他设计模式及其在JavaScript 中的实现).考虑到在ECMAScript 中无法创 ...

随机推荐

  1. HTML5 拖拽 & fabric 插件

    ### 拖拽 //html <div ondrop="drop(event)" ondragover="allowDrop(event)">< ...

  2. EasyUI篇のico

    所有图标位置: /themes/icons css引用位置: /themes/icon.css 可自行添加16*16的小图片放在icons中,icon.css代码添加即可 例如: .icon-logo ...

  3. Egret 双端接入爱贝支付遇到的问题

    首先要为 egret 工程引入第三方库: Egret 接第三方库:http://edn.egret.com/cn/index.php?g=&m=article&a=index& ...

  4. 复杂事件处理——Esper入门(示例程序)

    前面对Esper Quick Start & Tutorial进行了简单描述,希望各位看官能够大致了解what is Esper,甚至对how to work有朦朦胧胧的了解. 开发一个Esp ...

  5. 开源java

    http://code.google.com/p/nullpomino/source/checkout http://www.open-open.com/open254058.htm http://w ...

  6. Spring中用@Component、@Repository、@Service和 @Controller等标注的默认Bean名称会是小写开头的非限定类名

    今天用调度平台去调用bean中的方法时,提示找不到bean.经查,发现是由于如果在标注上没有提供name属性值,则默认的bean名称是小写开头的,而不是大写开头的. 下面是其他文档参阅: 使用过滤器自 ...

  7. Channel Allocation(四色定理 dfs)

    Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 10897   Accepted: 5594 Description When ...

  8. 【转】android开发中如何结束所有的activity

    原文网址:http://java--hhf.iteye.com/blog/1826880 每一个activity都有自己的生命周期,被打开了最终就要被关闭. 四种结束当前的activity方法 //关 ...

  9. module_init和init_module的区别

    今天在看CS8900的驱动时,发现其驱动的模块加载函数是init_module(),由于看到大多数的驱动用的模块加载函数大多是module_init()函数,所以一时没缓过神来,总是在找CS8900的 ...

  10. 网络流(二分):BZOJ 3993: [SDOI2015]星际战争

    Description 3333年,在银河系的某星球上,X军团和Y军团正在激烈 地作战.在战斗的某一阶段,Y军团一共派遣了N个巨型机器人进攻X军团的阵地,其中第i个巨型机器人的装甲值为Ai.当一个巨型 ...