C++引用指针 & 构造函数
2018-03-27 18:38
218 查看
近来回转 C++的学习,脑子又被搞得了一团迷(简直不要忘得太快.....
拷贝构造实现
[b]特征:
1. 拷贝构造函数其实是一个构造函数的重载。
2. 拷贝构造函数的参数必须使用引用传参,使用传值方式会引发无穷递归调用(调拷贝构造函数会传参,传参过程又会调用拷贝构造,以此往复...无穷递归)
3. 若未显示定义,系统会生成默认缺省的拷贝构造函数。缺省的拷贝构造函数会依次拷贝类成员进行初始化
何时调用拷贝函数:
一个对象以值传递的方式传入函数体
一个对象以值传递的方式从函数返回(与返回值优化密切相关)
一个对象需要通过另一个对象进行初始化
关于拷贝构造函数还有一类很热的问题,构造函数拷贝赋值函数的N种调用情况
即判断下面每种情况都调用了多少次构造、拷贝构造...
这其实和前面所说的传值返回也有着紧密的联系,同时还涉及编译器的优化,如果有兴趣可以参考:
http://www.cnblogs.com/hazir/archive/2012/04/19/2456840.html
class Date { public : Date() {} // 拷贝构造函数 Date (const Date& d) { _year = d ._year; _month = d ._month; _day = d ._day; } private : int _year ; int _month ; int _day ; };
拷贝构造实现
[b]特征:
1. 拷贝构造函数其实是一个构造函数的重载。
2. 拷贝构造函数的参数必须使用引用传参,使用传值方式会引发无穷递归调用(调拷贝构造函数会传参,传参过程又会调用拷贝构造,以此往复...无穷递归)
3. 若未显示定义,系统会生成默认缺省的拷贝构造函数。缺省的拷贝构造函数会依次拷贝类成员进行初始化
何时调用拷贝函数:
一个对象以值传递的方式传入函数体
一个对象以值传递的方式从函数返回(与返回值优化密切相关)
一个对象需要通过另一个对象进行初始化
关于拷贝构造函数还有一类很热的问题,构造函数拷贝赋值函数的N种调用情况
即判断下面每种情况都调用了多少次构造、拷贝构造...
//1.Date 对象做参数传值 void fun1 (Date d) //void fun1(Date& d) {} // 2.Date 对象做返回值传值 Date fun2 () // Date& fun2() { Date d ; return d ; } // 3.Date 对象做临时返回值传值 (编译器优化问题) Date fun3 () // Date& fun3() { return Date (); } int main () { // 场景 Date d1; fun1(d1); // 场景 Date d2 = fun2(); // 场景 Date d3 ; d3 = fun3 (); return 0; }
这其实和前面所说的传值返回也有着紧密的联系,同时还涉及编译器的优化,如果有兴趣可以参考:
http://www.cnblogs.com/hazir/archive/2012/04/19/2456840.html
相关文章推荐
- C++引用指针 & 构造函数
- C++引用指针吉林快三开奖网源码出售 & 构造函数
- 关于c++的引用和指针(&,*)
- C++的引用和指针的区别(&和*)
- C++中指针*和引用&的区别
- 【C/C++语法外功】传值&传引用&传指针
- C/C++指针的指针(**p)和指针的引用(*&)使用案例分析
- C++函数的传值调用&指针调用&引用调用
- c++ 笔记,->理解,指针的引用(*&)与指针的指针(**)
- 【C/C++语法外功】传值&传引用&传指针
- 【C/C++语法外功】传值&传引用&传指针
- C++学习笔记 c++引用(&)与指针(*)的区别
- 详解C++中指针(*)、取地址(&)、解引用(*)与引用(&)的区别 (完整代码)
- 详解C++中指针(*)、取地址(&)、解引用(*)与引用(&)的区别
- C++ 引用 指针 智能指针 拷贝构造
- [C++基础]019_指针和引用(int*、int&、int*&、int&*、int**)
- c++ 中 指针的指针** 与 指针的引用 *&
- C++ 引用 指针 智…
- 【C++】引用&指针
- More Effective C++----(1)指针与引用的区别 & (2)尽量使用C++风格的类型转换 & (3)不要对数组使用多态