c++知识总结(5)
2017-08-10 09:25
288 查看
拷贝构造函数:
如果一个构造函数的第一个参数是自身类类型的引用,且任何额外参数都有默认值,则此构造函数时拷贝构造函数。拷贝构造函数的第一个参数必须是引用类型。如果其参数不是引用类型,则调用永远不会成功——为了调用拷贝构造函数,我们必须拷贝它的实参,但为了拷贝实参,我们又需要调用拷贝构造函数,如此无限循环。
拷贝初始化不仅在我们用=定义变量时会发生,在下列情况下也会发生:
1.将一个对象作为实参传递一个非引用类型的形参
2.从一个返回类型为非引用的函数返回一个对象
3.用花括号列表初始化一个数组中的元素或一个聚合类的成员。
析构函数:
什么时候会调用析构函数
无论何时一个对象被销毁,就会自动调用其析构函数:
1.变量在离开其作用域时被销毁。
2.当一个对象被销毁时,其成员被销毁
3.容器(无论是标准库还是数组)被销毁时,其元素被销毁。
4.对于动态分配的对象,当对指向它的指针应用delete运算符时被销毁
5.对于临时对象,当创建它的完整表达式结束时被销毁。
如果一个构造函数的第一个参数是自身类类型的引用,且任何额外参数都有默认值,则此构造函数时拷贝构造函数。拷贝构造函数的第一个参数必须是引用类型。如果其参数不是引用类型,则调用永远不会成功——为了调用拷贝构造函数,我们必须拷贝它的实参,但为了拷贝实参,我们又需要调用拷贝构造函数,如此无限循环。
拷贝初始化不仅在我们用=定义变量时会发生,在下列情况下也会发生:
1.将一个对象作为实参传递一个非引用类型的形参
2.从一个返回类型为非引用的函数返回一个对象
3.用花括号列表初始化一个数组中的元素或一个聚合类的成员。
析构函数:
什么时候会调用析构函数
无论何时一个对象被销毁,就会自动调用其析构函数:
1.变量在离开其作用域时被销毁。
2.当一个对象被销毁时,其成员被销毁
3.容器(无论是标准库还是数组)被销毁时,其元素被销毁。
4.对于动态分配的对象,当对指向它的指针应用delete运算符时被销毁
5.对于临时对象,当创建它的完整表达式结束时被销毁。
相关文章推荐
- c/c++内存释放知识总结
- c/c++内存释放知识总结
- C++知识总结(3)
- C++ -Vector动态数组知识总结
- C++入门知识总结(1)
- C++知识总结(18)
- C++基础知识总结(一)
- 面试:C语言C++小知识总结(1)
- 【C++】第3章 处理数据 知识总结
- C++指针知识总结.
- C++primerplus知识总结二 (类知识点)
- C++程序员需要掌握的知识(个人总结)
- C/C++基础知识总结——数组、指针域、字符串
- C++知识总结思维导图
- C++模板知识总结
- 【C++/C】C++模板知识总结
- 【C++】第4章 复合类型 知识总结
- C++指针知识总结.
- C/C++基础知识总结——数据的共享与保护
- C++面试知识总结一(面试被问到的题)