VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

搜索
查看: 954|回复: 1

[讨论] c++ 复制构造和移动构造的方法有哪些

[复制链接]
41_avatar_middle
最佳答案
0 
在线会员 发表于 2022-7-26 11:00:09 | 显示全部楼层 |阅读模式
就是说复制构造的方法有使用=之类,具体有哪些




上一篇:程序退出的时候崩溃不知为啥
下一篇:基本常用的c语言的书籍
17_avatar_middle
最佳答案
39 
在线会员 发表于 2022-7-26 12:44:34 | 显示全部楼层
本帖最后由 yoobaby 于 2022-7-26 13:25 编辑

正好学习笔记里面有:
C++中三种情况下会调用拷贝构造函数:

* 使用一个已经创建完毕的对象来初始化另一个新对象。
* 值传递的方式给函数参数传值。
* 以值方式返回局部对象。

  1. class Point
  2. {
  3. private:
  4.     int xPos;
  5.     int yPos;
  6. public:
  7.     Point(int x = 0, int y = 0) {
  8.         cout << "调用构造函数" << endl;
  9.         xPos = x;
  10.         yPos = y;
  11.     }
  12.     //拷贝构造函数定义及实现
  13.     Point(const Point& pt) {
  14.         cout << "调用拷贝构造函数" << endl;
  15.         xPos = pt.xPos;
  16.         yPos = pt.yPos;
  17.     }
  18.         Point& operator=(const Point& pt) {
  19.                 cout << "调用重载运算符=函数" << endl;
  20.                 xPos = pt.xPos;
  21.                 yPos = pt.yPos;
  22.                 return *this;
  23.         }
  24.     void print() {
  25.       cout << "xPos: " << xPos << ",yPos: " << yPos << endl;
  26.     }
  27. };

  28. void showPoint(Point p) {
  29.     p.print();
  30. }

  31. Point createPoint() {
  32.     Point p(5, 6);
  33.     return p;
  34. }

  35. int main() {
  36.     Point pt1(3, 4);
  37.     pt1.print();

  38.     //使用一个已创建的对象来初始化另一个新对象时将调用拷贝构造函数
  39.     Point pt2 = pt1; //等价于Point pt2(pt1),调用拷贝构造函数
  40.     pt2.print();

  41.     //值传递的方式给函数参数传值时将调用拷贝构造函数
  42.     showPoint(pt2);

  43.     //以值方式返回局部对象时将调用拷贝构造函数,有移动构造时则调用移动构造!
  44.     Point pt3 = createPoint();

  45.     Point pt4;

  46.     pt4 = pt3; //调用默认的赋值运算符重载函数
  47.     pt4.print();
  48.     return 0;
  49. }
复制代码
您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

×【发帖 友情提示】
1、请回复有意义的内容,请勿恶意灌水;
2、纯数字、字母、表情等无意义的内容系统将自动删除;
3、若正常回复后帖子被自动删除,为系统误删的情况,请重新回复其他正常内容或等待管理员审核通过后会自动发布;
4、感谢您对VC驿站一如既往的支持,谢谢合作!

关闭

站长提醒上一条 /2 下一条

QQ|小黑屋|手机版|VC驿站 ( 辽ICP备09019393号-4 )|网站地图wx_jqr

GMT+8, 2022-11-30 21:47

Powered by CcTry.CoM

© 2009-2021 cctry.com

快速回复 返回顶部 返回列表