关于C++构造函数的FAQ
[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的更多相关文章
- javascript笔记—— 构造函数
出处:http://www.cnblogs.com/RicCC/archive/2008/02/15/JavaScript-Object-Model-Execution-Model.html 数据类型 ...
- C++11 FAQ中文版--转
更新至英文版October 3, 2012 译者前言: 经过C++标准委员会的不懈努力,最新的ISO C++标准C++11,也即是原来的C++0x,已经正式发布了.让我们欢迎C++11! 今天获得St ...
- 《深度探索c++对象模型》chapter2 构造函数语义学
关于c++,最常听到的一个抱怨是,编译器背着程序员做了太多事情,conversion运算符是最常被引用的一个例子:jerry schwarz,iostream函数库的建筑师,就曾经说过一个故事,他说他 ...
- FusionCharts导出图表常见问题(FAQ)汇总---FusionCharts常见问题大全
在前面几篇文章中,我们介绍了FusionCharts生成Flash图表常见问题FAQ以及使用中的一些常见报错及调试/解决方法.本文继续介绍FusionCharts导出图表时的一些常见问题(FAQ). ...
- C++ 风格与技术 FAQ(中文版)
Bjarne Stroustrup 的 C++ 风格与技术 FAQ(中文版) 原作:Bjarne Stroustrup 翻译:Antigloss 译者的话:尽管我已非常用心,力求完美,但受水平所 ...
- 《FontForge常见问题FAQ》字王翻译版
<FontForge常见问题FAQ> 字王翻译版 原文: http://fontforge.github.io/en-US/faq/ 翻译: 字王·中国 blog: http://bl ...
- 在全局对象(不是指针)的构造函数里不要对std集合做太多操作
写MaxvisionOnvif的时候,我用个宏把每个Command类注册到了CommandBuilder里面,通过全局对象初始化实现的,如下: void CommandBuilder::Registe ...
- .NET 基础 一步步 一幕幕[面向对象之构造函数、析构函数]
构造函数.析构函数 构造函数: 语法: //无参的构造函数 [访问修饰符] 函数名() :函数名必须与类名相同. //有参的构造函数 [访问修饰符] 函数名(参数列表):函数名必须与类名相同. 作用: ...
- javascript工厂模式和构造函数模式创建对象
一.工厂模式 工厂模式是软件工程领域一种广为人知的设计模式,这种模式抽象了创建具体对象的过程(本书后面还将讨论其他设计模式及其在JavaScript 中的实现).考虑到在ECMAScript 中无法创 ...
随机推荐
- Redis 中的事务
Redis支持简单的事务 Redis与mysql事务的对比 Mysql Redis 开启 start transaction muitl 语句 普通sql 普通命令 失败 rollback 回滚 di ...
- 在Linux下写一个线程池以及线程池的一些用法和注意点
-->线程池介绍(大部分来自网络) 在这个部分,详细的介绍一下线程池的作用以及它的技术背景以及他提供的一些服务等.大部分内容来自我日常生活中在网络中学习到的一些概念性的东西. -->代码 ...
- uboot main_loop函数分析
一.概述 main_loop()函数做的都是与具体平台无关的工作.主要包括的工作如下: (1)初始化启动次数限制机制 (2)Modem功能 (3)设置软件版本号 (4)启动延迟 (5)读取命令, ...
- linux常用命令(4)rm命令
rm是一个危险的命令,使用的时候要特别当心,尤其对于新手,否则整个系统就会毁在这个命令(比如在/(根目录)下执行rm * -rf).所以,我们在执行rm之前最好先确认一下在哪个目录,到底要删除什么东西 ...
- JSP的优势与劣势浅析
本文简单介绍了JSP技术,并对JSP的优势与劣势进行了简单的分析.JSP页面由HTML代码和嵌入其中的Java代码所组成. JSP(JavaServer Pages)是由Sun Microsystem ...
- Solr4.8.0源码分析(21)之SolrCloud的Recovery策略(二)
Solr4.8.0源码分析(21)之SolrCloud的Recovery策略(二) 题记: 前文<Solr4.8.0源码分析(20)之SolrCloud的Recovery策略(一)>中提 ...
- Web.config总结
%windir%/Microsoft.NET/Framework/v2.0.50727/CONFIG目录下machine.config定义了针对当前机器的WinForm程序和asp.net应用程序的配 ...
- 我的HttpClients工具
import java.io.IOException; import javax.ws.rs.core.MediaType; import org.apache.commons.httpclient. ...
- Linux kernel ‘ip6_sk_dst_check’函数拒绝服务漏洞
漏洞名称: Linux kernel ‘ip6_sk_dst_check’函数拒绝服务漏洞 CNNVD编号: CNNVD-201307-070 发布时间: 2013-07-05 更新时间: 2013- ...
- JavaScript 函数绑定 Function.prototype.bind
ECMAScript Edition5 IE9+支持原生,作用为将一个对象的方法绑定到另一个对象上执行. Function.prototype.bind = Function.prototype.bi ...