【C++】构造拷贝构造的 N 中调用情况
来源:互联网 发布:58上面网络销售可靠吗 编辑:程序博客网 时间:2024/05/21 11:20
1. 总结 C++ 对传参和传返回值时构造的优化处理。
1)C++ 形式参数类型和返回值类型如果是引用,那么在传递时,会把实参或者返回值的引用自动赋值给形式参数(返回值)。
2)C++ 返回值赋值和返回值的使用往往会进行编译器的优化,例如:下面的调用中,只会调用两次构造函数(一次是默认构造函数,另外一次是自动拷贝构造函数)
Student s = getStudent();Student getStudent(){ return Student s;}
3)
Student s;Student s2 = s;Student s3(s);
编译器会自动将上述第二句优化成第三句。
4)C++ 函数参数(或者返回值)赋值时,如果其类型是类并且对应的构造函数存在,那么会自动调用匹配的构造函数构造目标类型,例如:
Student s = getStudent();Student getStudent(){Student s; return &s;}Student(const student* s){}
虽然返回值类型是 Student 类对象,但是返回值是指针并且存在对应的构造函数(student 指针构造函数),所以程序能够正确编译,但是如果没有显式重载对应的特殊构造函数,程序编译不能通过。
2. 完成下面的题目。
Test1 中调用了___次 AA 的拷贝构造函数,___次 AA 的赋值运算符函数的重载。
Test2 中调用了___次 AA 的拷贝构造函数,___次 AA 的赋值运算符函数的重载。
Test3 中调用了___次 AA 的拷贝构造函数,___次 AA 的赋值运算符函数的重载。
class AA{};AA f(AA a){ return a;}void Test1(){ AA a1; a1 = f(a1);}void Test2(){ AA a1; AA a2 = f(a1);}void Test3(){ AA a1; AA a2 = f(f(a1));}
Test1 中调用了_2_次 AA 的拷贝构造函数,_1_次 AA 的赋值运算符函数的重载。
Test2 中调用了_2_次 AA 的拷贝构造函数,_0_次 AA 的赋值运算符函数的重载。
Test3 中调用了_3_次 AA 的拷贝构造函数,_0_次 AA 的赋值运算符函数的重载。
阅读全文
0 0
- 【C++】构造拷贝构造的 N 中调用情况
- 【c++】构造拷贝构造的N种调用情况问题
- 构造拷贝构造的N中调用情况的问题
- 构造&拷贝构造的N中调用情况
- 【C++】构造拷贝构造的N中调用情况的问题
- C++构造拷贝中拷贝的N种调用情况
- C++-拷贝构造中的N中调用情况
- 拷贝构造中的N中调用情况
- C++传参构造的优化和讨论构造拷贝构造N中调用情况
- 构造拷贝构造的N种调用情况
- 讨论构造、拷贝构造的N种调用情况
- 讨论构造拷贝构造函数的N种调用情况
- 讨论构造拷贝构造的N种调用情况问题
- 构造,拷贝构造的N种调用情况
- 讨论构造拷贝构造的N中调用情况的问题
- 讨论构造拷贝构造的N中调用情况的问题
- 讨论构造拷贝构造的N中调用情况的问题
- 构造、拷贝构造的N种情况
- 字符串相关题目
- 正态分布/BP算法—笔记
- 11.7-全栈Java笔记:如何实现线程同步
- 浏览器渲染页面原理
- 秒变配色高手!怎么都不会错的6条网页设计配色原则
- 【C++】构造拷贝构造的 N 中调用情况
- 在Ubuntu 14.04.2 LTS上安装Qt
- java网络编程之application/x-www-form-urlencoded MIME
- Apache Jmeter入门
- Webstorm 2016 full version activation code for free
- Java中解压文件名有中文的rar包出现乱码问题的解决
- Apache Jmeter进阶-RPC服务压测
- 线性表的顺序存储
- 堆栈内存区别