C++构造函数的调用
来源:互联网 发布:linux mysql 3306端口 编辑:程序博客网 时间:2024/05/17 16:13
很快就要找工作笔试面试啥的了,昨晚又有问我关于C++构造函数的调用问题。
C++98/03标准中有三个特殊的构造函数,默认构造函数,拷贝构造函数和赋值构造函数;C++11/14中海油基于移动语义的移动拷贝构造函数和移动赋值函数。
一般的,对于一个类的构造函数,假如原型如下
MyClass(T1 val1, T2 val2 = value);
那么实际使用的时候,这样写
MyClass obj(value1, value2);就是构造函数的显示调用了,并不需要写成普通函数的调用形式,需要把函数名和括号写出来的那种 func(arg1, arg2)。
MyClass obj = MyClass(value1, value2);而且这么写,语义上是先调用了上边的构造函数,然后再调用拷贝构造函数(实际上编译器会做优化,省掉拷贝构造函数的调用)。这就是构造函数特殊的地方,就像拷贝构造函数的调用和赋值构造函数的调用不是以是否用等号来区别的,而是初始化和赋值的区别。
在C++中,隐式的调用构造函数的情况是那种支持单参数的构造函数,比如上边的构造函数由于有一个缺省的参数,所以可以只用带一个参数,于是
MyClass obj = value1;这里就是构造函数的隐式调用(把最上边的构造函数定义为explicit 这里会报错),先用value1 构造一个临时对象,然后来拷贝构造对象obj,当然现在C++支持统一的大括号初始化,所以在构造函数的调用过程中,使用大括号和使用小括号的效果是一样的。
注意,对于单独出现的(value1, value2), 这是一个逗号表达式,表达式的值为value2!
0 0
- [C++] 拷贝构造函数的调用
- 【C++&Java】构造函数的调用点
- 【c++】构造函数调用顺序的研究
- c++:(各种)构造函数的调用方式
- 构造函数的调用
- 构造函数的调用
- 构造函数的调用
- 构造函数的调用
- 看C++中构造函数的调用顺序
- C++——构造函数的不同调用情况
- C++:构造函数中调用虚函数
- C++:构造函数中调用虚函数
- c++:在类的构造函数中调用另一个构造函数
- C++构造函数调用其他构造函数
- 复制构造函数的调用
- 串联构造函数的调用
- 构造函数的默认调用
- 各种构造函数的调用
- android基本架构
- Linux环境进程间通信(五): 共享内存
- Extjs初学入门,详细panel、form、grid等介绍
- xml解析代码实例
- Spring与Quartz的整合实现定时任务调度
- C++构造函数的调用
- android studio 程序 真机中文乱码
- 字符串问题(三)
- Xcode各种版本下载
- PHP高级工程师的面试题
- Android之学习安卓每天成长笔记
- 第四章函数和递归入门
- 读取Java文件到byte数组的三种方式
- 九度oj-1127-简单密码